2

我对 Java 很陌生,所以我认为我的问题会很幼稚。

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

简而言之,我想知道是否有机会使超类中的私有字段在子类中以某种方式可见,尽管用户仍然无法访问?

4

4 回答 4

6

听起来你在描述protected

请参阅Java 教程中的控制对类成员的访问。

于 2013-05-31T13:34:27.213 回答
1

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

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

于 2013-05-31T13:36:27.980 回答
0

您可以将超类中的字段设置为protected而不是private。这将使子类以及同一个包中的其他类可以访问这些字段,但世界不能访问这些字段。

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

于 2013-05-31T13:36:22.867 回答
0

您有 2 个选项。

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

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

于 2016-04-21T18:07:31.727 回答