好的设计:如何使用超类的领域

可能重复:
Java保护的字段vs公共getter

如果我有那个类B扩展A并且在A中我有一些字段也是我在B中使用的,那么最好使这个字段受保护,并且从类B调用它们或者为这个字段写入getter方法,因此从类B使用这个方法? (这个字段在A的构造器中设置)


如果你更喜欢getter在公共接口中的公共成员数据(就像你应该这样),那么出于同样的原因使用受保护的getter。 像公共客户一样,子类是不受控制的类,不需要对内部进行无限制的访问。


我认为使用getter和setter方法总是更好的选择,即使是在同一个班级! 原因很简单。 想要以您访问该领域的方式更改任何内容的图像。

例如你访问一个保存一个值的int。 现在由于某些原因,您希望在访问它们之前将此值始终乘以2。 如果使用访问器方法,则可以简单地更改方法:

private int test = 5;

public int getValue() {
   return test;
}

public int getValue() {
   return test * 2;
}

如果你想直接访问现场测试时也一样,当你想改变这些事情时,你会遇到很大的问题。


在我看来,我知道很多人会不同意,如果这些类都是由你来实现的,最好使用protected对象/变量,因为它可以让你更好地控制扩展超类的类的内部。 我不会太担心封装问题,因为你控制了整个源代码。

如果课程由其他没有课程来源的人员来扩展,我建议在必要时使用获得者,甚至在可能的情况下避免这种情况。

链接地址: http://www.djcxy.com/p/51535.html

上一篇: Good design: How use fields of superclass

下一篇: Parsing an XML inside a zip in