Java中的实例字段声明

时间:2011-10-27 19:35:20

标签: java

我只是掌握了OOP,并且一直在玩Java。我遇到的一个麻烦是决定是否需要特定类的私有实例字段。是否有一个经验法则我应该使用的是否我需要创建一个非私有实例字段?

感谢。

4 个答案:

答案 0 :(得分:1)

好吧,问问自己,它是否是逻辑上对象实例的 state 的一部分。它是关于对象的一部分,它对于对象的整个生命周期是有效的,还是仅在单个方法的过程中应用的东西(在这种情况下它应该是局部变量)?或者它实际上是否适用于类本身(在这种情况下它应该是静态的)?

如果你能给出一些你不太确定的例子,那会有所帮助。

(请注意,我假设这里的选择是变量的类型 - 静态,实例或本地。实例变量应该总是是私有的:)

答案 1 :(得分:1)

如果它是对象的自然部分或对象需要定期执行某些任务的东西,那么无论如何都要使它成为属性。如果它是常量,那么你应该把它变成一个公共类变量(或者更确切地说是一个常量:P)。也就是说,将其声明为“公共静态最终版w / e”

公共实例变量不经常使用,因为它经常导致代码更加混乱。如前所述,将实例变量(或属性)视为对象状态。通过对它进行操作来改变对象的状态通常更清楚,而不是在公共场所周围进行操作。祝你好运。

答案 2 :(得分:0)

“避免除常量之外的公共字段。(本教程中的许多示例都使用公共字段。这可能有助于简明地说明某些要点,但不建议用于生产代码。)公共字段倾向于将您链接到特定字段实施并限制您更改代码的灵活性。“ Controlling Access to Members of a Class

答案 3 :(得分:0)

在学习面向对象编程时,将其视为将现实世界概念建模为代码的一种方式。名词成为对象;并且对名词所做的动作成为方法。实例变量是那些名词的属性。例如,如果您有一个代表Car的班级,那么slamOnTheBreaks()将是一种Driver会打电话给休息的方法,Car有一定数量的席位在里面,对吗?因此,实例变量为int numberOfSeats;

在需要知道,需要改变的基础上考虑实例变量。通过公开numberOfSeats,这将允许Driver更改汽车中的座位数,这没有任何意义。他们只需要知道汽车有多少个座位,当他们上车时可以找到,或者更确切地说,调用方法public int getNumberOfSeats()

正如丹尼所说,常数的故事是不同的。如果值是常量,则它将在程序执行的整个持续时间内保持不变,例如,如果您希望Driver Bob成为所有Driver和{Car的唯一Truck {1}}您创建的对象Bob最好是可访问的,即公共的,因此他可以位于CarTruck中(假设{{1}之间没有继承) }和Car),和b。)无法改变。