【发布时间】:2015-10-16 15:09:00
【问题描述】:
根据我的理解规则和受保护变量的访问级别:
如果是同一个包
class A {
protected int =200;
}
class B extends A {
B 是 B 的引用变量
B.i 覆盖 B 类中 i 的值
b.i = 400;
a 是 A 的引用变量
a.i 将始终打印 200
}
class C extends B {
c 是 C 的引用变量 c.i 覆盖 C 类中 i 的值
c.i = 500;
a 是 A 的引用变量 a.i 将始终打印 200
}
结论:A 类的受保护成员在所有类的同一个包中都是公共的。
如果不同的包使用 A
这里 A 和 D 不在同一个包中
class D extends A {
System.out.print(a.i);
上面的语句会抛出编译时错误
这里 a.i 不可访问,我现在在 A 中是私有的
您只能将 i 与 D 的 ref 变量一起使用
System.out.print(d.i);
//no error
}
class E extends D {
System.out.print(a.i);
上面的语句会抛出编译时错误
这里 a.i 不可访问,i 现在在 A 中是私有的
System.out.print(d.i);
上面的语句会抛出编译时错误
这里 d.i 不可访问,我现在在 D 中是私有的
您只能将 i 与 E 的 ref 变量一起使用
System.out.print(e.i);
没有错误
}
结论:类 A 的受保护成员在其直接子类的其他包中表现为私有变量。
谁能给我更多关于受保护变量的访问级别的详细信息?
【问题讨论】:
-
只是……一些随机的细节?除了不是关于实际问题之外,您的问题太宽泛了。
-
Marko - 我的问题很简单 :) 我只是想知道受保护变量包的访问级别。
-
如果您的问题很简单,请明确说明。
Can anyone give me more details on access level of protected variables ?不是一个清晰而简单的问题,它是对没有重点的贡献的一般要求。