我试图得到比迄今为止能够更好的理解......它是为了帮助我上课,但没有完成任何特定的家庭作业;我正在寻找更多的概念信息,这些信息在我的教科书或教程中找不到。在纯粹的理论层面上,我明白了为什么封装对面向对象编程来说是强大的,但需要更好地理解什么,特别是正在发生。我一直在困惑自己关于数据流的路径,并且想知道我们从哪里获取数据和设置数据。希望这不是“没有愚蠢问题”规则的例外。在Java中获取和设置方法。他们如何工作?
考虑:
public class Employee
{
private int empNum;
public int getEmpNum()
{ return empNum; }
public void setEmpNum(int Emp)
{ empNum = emp; }
}
我的这种解释:使用int Emp
从某处过去了,我们在set...
方法设置的声明empNum变量。然后,我们get...
该变量并将其返回给调用方法。这是一个很好的理解?
进一步考虑:
import.javax.*
public class CreateEmp
{
public static void main(String[] args)
{
int ssn;
ssn = JOptionPane.showInputDialog(null,"enter ssn");
Employee newEmp = new Employee(123456789);
JOptionPane.showMessageDialog(null,"Employee ID " + newEmp.getEmpNum);
}
}
有了这个类,因为在声明new Employee(123456789)
自动地发送该值到set...
方法我并不需要显式set
一个变量。 Employee方法中的return
将结果值返回给调用方法,并使该变量可用,在本例中为我的对话框输出。我有处理吗?
这里是我困惑的地方。根据我上面提到的理解 - 这可能是关闭的 - 我永远不能决定放置逻辑的最佳位置。例如:我会在Employee
类中放置“输入员工编号”对话框,只有传递给方法的参数为null时才会运行条件。在我看来,就我所了解的数据流而言,课程的目的是获得一个员工编号。如果没有提供默认值,则需要创建一个。我不确定这个想法是否是最佳实践,或者如果我以后为自己设置了麻烦。
我很想听听关于我是否正确理解发生了什么的一些想法。
UI不应该在Employee类中,因为员工不在乎它如何获取信息,也不应该这样做。 Java中几乎没有什么是“自动的”:构造函数参数值被设置为实例值的唯一方法是如果实例值是构造函数设置它的值:您的示例除了缺省构造函数以外什么也没有,因此尝试使用a实例化具有参数的ctor将无法编译。 – 2012-04-01 22:06:56
我认为这是我感到有点困惑的地方,可能是因为我一直是程序编程人员,直到现在。 get-set组合与UI不同,在我看来,UI创建一个值,将其发送到get-set,然后将其返回到UI。为什么不跳过get-set并使用UI中的值?我知道它与抽象有关,但我们创建的简单骰子,卡片和员工程序可能仅仅是太简陋而无法为我制作这种凝胶。 – dwwilson66 2012-04-02 00:09:05