【发布时间】:2015-06-17 01:45:01
【问题描述】:
我在 SO 中看到用户说受保护的字段不好,因为随着代码的增长它会引入问题。请参考以下代码。
public class Car {
private String modelName;
private int yearReleased;
//getters and setters
}
如果 Car 类由名为 ToyotaCar 的类扩展
public class ToyotaCar extends Car{
// Toyota specific stuff
}
我希望我的 ToyotaCar 对象具有 modelName 和 yearReleased 字段。这就是为什么我决定从 Car 类扩展。但是子类不会继承私有成员(即使我可以使用公共 getter 和 setter 访问这些字段)。现在我的困惑是我是否应该将 Car 类中的文件设置为受保护而不是私有。但人们说这会带来问题。
这是否意味着无论您总是编写什么类,都将字段设为私有?
如果是这样,在哪些情况下使用了受保护的关键字?它仅适用于我们计划在子类中使用的方法吗?
【问题讨论】:
-
使用吸气剂。任何人都不应该在类的内部闲逛。如果您稍后决定向设置器添加验证怎么办?
protected访问将完全绕过这一点。经验法则是封装一切,类应该有方法而不是变量。 -
ToyotaCar实例 do 具有modelName和yearName字段,即使它们仍然无法通过Car之外的方法访问。 -
说字段是否被继承是没有意义的;这个词实际上并没有严格的定义。
标签: java inheritance private public access-modifiers