我知道除了使用超类的公共setter / getter之外,子类无法访问私有字段。到目前为止,我对面向对象语言没有任何经验。我应该将所有字段设为私有,只使用公共方法在子类中访问它们,还是使它们受到保护并在子类和包中自由使用?
答案 0 :(得分:1)
让他们protected
。这是此关键字存在的唯一目的!
答案 1 :(得分:1)
在OOP
中,有一项功能encapsulation
和encapsulation
强烈建议我们隐藏来自外部世界的数据。您可以通过将字段/属性/变量设为私有来隐藏数据。
要访问私有变量,请使用一些公共getter
方法。
答案 2 :(得分:1)
这取决于您的需求。如果您需要访问子类以及相同的包,请将其设为protected
。
以下是一般规则:
private
:仅限访问类。
protected
:包访问以及派生类。
default
:仅限同一个包。
public
:任何人都可以访问它。
答案 3 :(得分:0)
子类不继承其父类的私有成员。但是,如果超类具有访问其私有字段的公共或受保护方法,则子类也可以使用这些方法。
嵌套类可以访问其封闭的所有私有成员 class-字段和方法。因此,公共或受保护的嵌套 由子类继承的类具有对所有子类的间接访问权限 超类的私人成员。