我对 Java 很陌生,所以我认为我的问题会很幼稚。
对于我的一个项目,我决定用 Java 编写代码,我想利用封装和继承概念。
简而言之,我想知道是否有机会使超类中的私有字段在子类中以某种方式可见,尽管用户仍然无法访问?
我对 Java 很陌生,所以我认为我的问题会很幼稚。
对于我的一个项目,我决定用 Java 编写代码,我想利用封装和继承概念。
简而言之,我想知道是否有机会使超类中的私有字段在子类中以某种方式可见,尽管用户仍然无法访问?
听起来你在描述protected
。
请参阅Java 教程中的控制对类成员的访问。
简而言之,这是不可能的。最接近的选择是使其受到保护,但现在可以从同一包中的其他类访问该字段,即使它们不扩展超类。
另一种选择可能是使用反射从子类访问这些字段,但这真的很难看。
您可以将超类中的字段设置为protected而不是private。这将使子类以及同一个包中的其他类可以访问这些字段,但世界不能访问这些字段。
您可能会发现本教程很有帮助:http ://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
您有 2 个选项。
将私有访问修饰符更改为至少受保护。但是如果你这样做,变量可以在包内部访问。不仅是子类。
在父类中为私有变量定义 get 方法,并在子类中使用 super.getX()。此外,您可以将 get 方法访问修饰符设置为 protected 以避免从包外部的类访问 get 方法。