java - 为什么子类成员不受保护?
问题描述
如果 MyTest 不是 Val 的父类,为什么 vv 可以访问?
public class MyTest
{
public static void main (String args [])
{
ValX v = new ValX ();
System.out.println ("A: " + v.v); // is working, why?
}
}
public class ValX extends Val
{
}
public class Val
{
protected float v = 11;
}
编辑
我了解了包内保护的可见性。这就是原因。谢谢!
有没有一种方法可以使 v 仅对父类可见而不将其移动到另一个包?
解决方案
在 Java 中,可见性级别形成了一个完全有序的包含链。
private
只能从当前类中看到成员。
package-private
成员只能从当前包中看到,当前类是该包的一部分。
protected
成员只能从子类或当前包中看到,从而覆盖了 package-private 可以看到的所有内容。
public
从任何地方都可以看到一个成员。
由于您的 MyTest 类与 Val 在同一个包中,因此protected
可见性授予访问权限。
推荐阅读
- oracle - 我们可以在 Oracle Commerce Cloud (OCC) Widgets 中使用任何产品数据吗?
- asp.net - 从 wep api 启动 ac# 程序失败
- regex - 通过正则表达式替换字符串中的多个字符串
- r - 分组变量上的ggplot和ggsignif错误
- python - TypeError:float()参数必须是python的字符串或数字
- vue.js - 从 index.html 导入 SCSS 文件不起作用
- content-management-system - TYPO3 9.5.2 Slug:多语言:找不到页面 404 异常,如果不存在页面翻译
- ajax - Zend2:通过 ajax 动态加载部分(例如标签)
- json - 我的片段无法显示来自 json url 的 recyclerview 和数据
- node.js - Node.js 命令行变量无法识别