[英]In Java, why can't a super-class method access protected or private methods/variables from a sub-class instance?
[英]Java abstract class - Should the instance variables be private or protected?
实例变量应该是私有的还是在Java抽象类中受保护的?
简单的问题。 我试图对Java中的抽象概念有更多的了解。 谢谢!
根据经验,可以使用非最终私有变量。 如果您的设计要求让派生类访问这些变量,请提供受保护的方法来访问它们。
使用受保护的变量会在所有类(无论是否抽象)中产生维护责任。 有人从您的抽象类继承后,您的受保护变量就会像公开一样被公开。 以下是应避免使用此变量的一些原因:
第一条规则不适用于最终变量,因为它们无法更改,因此它们对该规则来说是一个例外。 但是,第二条规则仍然适用,因此即使在定义变量为最终变量的情况下,也应谨慎定义。
如果受保护,则此类和任何子类都可以访问该属性。 如果为private,则只有此类可以访问该属性(不继承)。 这取决于您是否需要在任何子类中访问它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.