java抽象类中的实例变量应该是private还是protected?
简单的问题。我试图更深入地了解 java 中的抽象概念。 谢谢!
最佳答案
根据经验,选择非 final 私有(private)变量。如果您的设计要求让派生类访问这些变量,请提供 protected 方法来访问它们。
使用 protected 变量会在所有类中产生维护责任,无论是否抽象。一旦有人从您的抽象类继承,您的 protected 变量就会暴露出来,就好像它们是公开的一样。以下是应避免使用此变量的一些原因:
- 继承类可以随意更改变量 - 这可能会绕过抽象基类设置的变量验证
- 继承类变得依赖于变量名称和类型 - 这锁定了您在定义 protected 变量时所做的设计选择。
第一条规则不适用于 final 变量,因为它们无法更改,因此该规则为它们设置了一个异常(exception)。不过,第二条规则仍然适用,因此您在定义 protected 变量时应该小心,即使在它们是最终变量的情况下也是如此。
关于Java 抽象类 - 实例变量应该是私有(private)的还是 protected ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49215130/