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

时间:2018-03-10 23:36:27

标签: java abstract

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

简单的问题。我试图更深入地了解java中的抽象概念。 谢谢!

2 个答案:

答案 0 :(得分:2)

根据经验,选择非最终的私有变量。如果您的设计要求为派生类提供对这些变量的访问权限,请提供访问它们的受保护方法。

使用受保护变量会在所有类中创建维护责任,无论是否抽象。只要有人从您的抽象类继承,您的受保护变量就会被公开,就像它们是公开的一样。以下是为什么应该避免这些变量的一些原因:

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

第一条规则不适用于最终变量,因为它们无法更改,因此规则会对它们进行例外处理。但是,第二条规则仍然适用,所以即使它们是最终的,你也要小心定义受保护的变量。

答案 1 :(得分:1)

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

相关问题