使私有字段在继承的子类中可见

时间:2013-05-31 13:32:15

标签: java inheritance encapsulation superclass

我对Java很新,所以我认为我的问题会很天真。

对于我的项目,我决定用Java编写代码,我想使用封装继承概念。

保持简短,我想知道是否有机会让超类中的私有字段在子类中以某种方式显示,尽管用户仍然无法访问它?

4 个答案:

答案 0 :(得分:6)

听起来你正在描述protected

请参阅Java教程中的Controlling Access to Members of a Class

答案 1 :(得分:1)

简而言之,这是不可能的。最接近的选项是保护它,但现在可以从同一个包中的其他类访问该字段,即使它们没有扩展超类。

另一种选择可能是使用反射从子类访问这些字段,但它真的很难看。

答案 2 :(得分:0)

您可以使超类受保护中的字段而不是私有。这将使子类以及同一包中的其他类可以访问这些字段,但不能访问世界。

您可能会发现本教程很有用:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

答案 3 :(得分:0)

您有2个选项。

  1. 将私人访问修饰符更改为至少受保护。但是如果你这样做,变量可以访问包内。不仅是子类。

  2. 在父类中为私有变量定义get方法,并在子类中使用super.getX()。此外,您可以将get方法访问修饰符设置为protected,以避免从包外的类访问get方法。