我对Java很新,所以我认为我的问题会很天真。
对于我的项目,我决定用Java编写代码,我想使用封装和继承概念。
保持简短,我想知道是否有机会让超类中的私有字段在子类中以某种方式显示,尽管用户仍然无法访问它?
答案 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个选项。
将私人访问修饰符更改为至少受保护。但是如果你这样做,变量可以访问包内。不仅是子类。
在父类中为私有变量定义get方法,并在子类中使用super.getX()。此外,您可以将get方法访问修饰符设置为protected,以避免从包外的类访问get方法。