java使私有字段在继承的子类中可见
我对Java相当陌生,所以我认为我的问题会相当幼稚
对于我的一个项目,我决定用Java编写代码,我想使用封装和继承概念
简而言之,我想知道是否有机会使超类中的私有字段在子类中以某种方式可见,尽管用户仍然无法访问
你可以在下面搜索框中键入要查询的问题!
我对Java相当陌生,所以我认为我的问题会相当幼稚
对于我的一个项目,我决定用Java编写代码,我想使用封装和继承概念
简而言之,我想知道是否有机会使超类中的私有字段在子类中以某种方式可见,尽管用户仍然无法访问
# 1 楼答案
听起来你在描述
protected
请参阅Java教程中的Controlling Access to Members of a Class
# 2 楼答案
你有两个选择
将中的private access修饰符更改为至少受保护。但如果这样做,变量可以在包内访问。不仅仅是子类
在父类中为私有变量定义get方法并使用super。子类中的getX()。此外,您可以将get method access修饰符设置为protected,以避免从包外的类访问get method
# 3 楼答案
简而言之,这是不可能的。最接近的选项是使其受到保护,但现在该字段可以从同一个包中的其他类访问,即使它们不扩展超类
另一个选择是使用反射从子类访问这些字段,但这会非常难看
# 4 楼答案
您可以将超类中的字段设置为受保护的,而不是私有的。这将使子类和同一包中的其他类都可以访问这些字段,但对整个世界都是不可访问的
您可能会发现本教程很有帮助:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html