实例变量应该在java抽象类中是私有的还是受保护的?
简单的问题。我试图更深入地了解java中的抽象概念。 谢谢!
答案 0 :(得分:2)
根据经验,选择非最终的私有变量。如果您的设计要求为派生类提供对这些变量的访问权限,请提供访问它们的受保护方法。
使用受保护变量会在所有类中创建维护责任,无论是否抽象。只要有人从您的抽象类继承,您的受保护变量就会被公开,就像它们是公开的一样。以下是为什么应该避免这些变量的一些原因:
第一条规则不适用于最终变量,因为它们无法更改,因此规则会对它们进行例外处理。但是,第二条规则仍然适用,所以即使它们是最终的,你也要小心定义受保护的变量。
答案 1 :(得分:1)
如果受保护,则此类和任何子类都可以访问该属性。如果是私有的,那么只有这个类可以访问该属性(它不是继承的)。这取决于您是否需要在任何子类中访问它们。