首页 > Java > java教程 > 为什么我无法从另一个包访问 Java 子类中的受保护成员?

为什么我无法从另一个包访问 Java 子类中的受保护成员?

Linda Hamilton
发布: 2024-12-10 04:47:12
原创
878 人浏览过

Why Can't I Access a Protected Member in a Java Subclass From Another Package?

理解 Java 的 protected 修饰符

问题:

考虑两个类 A 和 C,其中 C 扩展了 A。假设A 将实例变量声明为 protected int protectedInt = 1。尽管期望受保护的成员应该可以在对于其他包中的子类,Eclipse 将对类 C 中的 protectedInt 的访问标记为不可见。

答案:

Java protected 修饰符允许访问其自己包中的成员以及子类,但仅当通过子类的实例进行访问时。这是因为受保护的访问范围仅限于子类类型,而不是声明受保护成员的类。

根据 Java 语言规范 (JLS),“仅允许在子类体内进行访问” C 的 S。”这意味着即使 C 扩展了 A,也不允许从 A 的实例直接访问 protectedInt。

解决方案:

访问子类中的 protected 成员,必须使用子类类型。例如,以下代码是有效的:

C c = new C();
System.out.println(c.protectedInt);
登录后复制

在这种情况下,访问是通过子类 (C) 的实例进行的,因此受保护的成员是可见的。

以上是为什么我无法从另一个包访问 Java 子类中的受保护成员?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板