繁体   English   中英

Java抽象类-实例变量是私有的还是受保护的?

[英]Java abstract class - Should the instance variables be private or protected?

实例变量应该是私有的还是在Java抽象类中受保护的?

简单的问题。 我试图对Java中的抽象概念有更多的了解。 谢谢!

根据经验,可以使用非最终私有变量。 如果您的设计要求让派生类访问这些变量,请提供受保护的方法来访问它们。

使用受保护的变量会在所有类(无论是否抽象)中产生维护责任。 有人从您的抽象类继承后,您的受保护变量就会像公开一样被公开。 以下是应避免使用此变量的一些原因:

  • 继承类可以随意更改变量 -这可能会绕过抽象基类设置的变量验证
  • 继承类变得依赖于变量名和类型 -这将锁定您在定义受保护变量时所做的设计选择。

第一条规则不适用于最终变量,因为它们无法更改,因此它们对该规则来说是一个例外。 但是,第二条规则仍然适用,因此即使在定义变量为最终变量的情况下,也应谨慎定义。

如果受保护,则此类和任何子类都可以访问该属性。 如果为private,则只有此类可以访问该属性(不继承)。 这取决于您是否需要在任何子类中访问它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM