2010-12-21 70 views
2

我有一个抽象的java类,它实现了它的几个方法,但没有其他的方法。在它实现的方法中,它使用私有属性变量。所使用的变量也需要在子类中使用。子类需要访问抽象超类的私有属性

在我看来我的选择是:

  • 声明私有变量在子类和超类
  • 都推迟目前在抽象类中实现的子类方法的实现

还有其他的选择吗?哪些更有意义,为什么?

回答

2

问题是你想如何维护自己的状态:如果它没有问题,那么值的存储位置,你可以添加一个private成员“在另一个的顶部”,并用它来代替超类。如果您希望从您的超类中获取一些方法以及您的子类中的某些方法以访问相同的状态,则需要更改可见性:

您可以声明变量为protected,使其在子类中可访问,或者实现访问器方法,甚至使其成为public

+0

这样做更有意义,因为我需要维护变量的状态。谢谢 – 2010-12-21 17:20:08

1

希望抽象类的设计使你不需要访问私有字段。至于你使用哪两种方法,完全取决于抽象类和你的子类是什么以及它们应该做什么。

如果您只需要读取此变量的访问权限而超类方法不修改它,您可以为您的子类添加另一个(完全独立的)相同名称/类型的专用字段。如果您试图通过更改字段来修改超类方法的行为,您将不得不重写方法。