我有一个抽象的java类,它实现了几个方法,但不是其他方法。在它实现的方法中,它使用私有属性变量。使用的变量也需要在子类中使用。
我认为我的选择是:
还有其他选择吗?哪一个更有意义,为什么?
答案 0 :(得分:2)
问题是您希望如何维护您的状态:如果无关紧要,存储该值的位置,您只需在另一个上方添加private
成员“并使用该成员而不是超类中的那个。如果您希望从超类中获取一些方法,并从子类中获取某些方法来访问相同的状态,则需要更改可见性:
您可以将变量声明为protected
,使其可以在子类中访问,或者实现访问器方法,甚至可以使其成为public
。
答案 1 :(得分:1)
希望抽象类的设计使您不需要访问私有字段。至于你使用哪两个方法,这完全取决于抽象类和你的子类是什么以及它们应该做什么。
如果您只需要对此变量的读访问权限且超类方法不对其进行修改,则可以向您的子类添加另一个(完全独立的)同名/类型的私有字段。如果您试图通过更改字段来修改超类方法的行为,那么您将不得不重写方法。