所以今天早上我在处理本地类时遇到了关于范围的奇怪继承行为。
public class Foo{
public void printer(){
class Hello extends Bar{
private String str = "Hello";
}
class World extends Hello{
private void print(){
System.out.println(super.str);
}
}
}
}
类 Bar 看起来像这样:
public class Bar{
protected String str = "FooBar";
}
所以我期望这样的输出:
FooBar
但最终得到:
Hello
String 声明的私有前缀不应该阻止子类访问变量吗?
但是,我继续进行并删除了字符串声明,这一次以我之前的预期输出结束。
那么为什么在直接父类中将同名变量声明为private时,总是获取不到类Bar的变量呢?
感谢您提前提供任何帮助。