为什么使用不同包中的子类中的父引用无法访问一个包中的父类的受保护方法

时间:2016-03-09 07:34:14

标签: java package protected

为什么无法使用位于不同包中的子类中的父引用来访问一个包中的父类的受保护方法。 [A.java] [[]] [ 1] [1]] 2

2 个答案:

答案 0 :(得分:0)

受保护的范围在包内。即使您拥有该类的实例,也无法从其他包访问它。

Oracle documentation

中的范围表
Modifier    Class   Package Subclass    World
public      Y       Y       Y           Y
protected   Y       Y       Y           N
no modifier Y       Y       N           N
private     Y       N       N           N

答案 1 :(得分:0)

按惯例 - 这是protected定义的内容。仅通过继承来保护子类中的成员。别无他法。

让我们假设我们可以使用父类实例访问子类中受保护的成员,该子类位于不同的包中。

现在,如果成员被宣布为publicprotected,您将如何区分您的子课程?此外,如果可以使用父实例访问它,那么为什么只能从子类访问它?它应该可以使用父类实例从任何地方访问。

我希望,如果你向自己提出这些问题 - 这一切都将开始有意义。