好的设计:如何使用超类的领域
可能重复:
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