0

所以今天早上我在处理本地类时遇到了关于范围的奇怪继承行为。

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的变量呢?

感谢您提前提供任何帮助。

4

0 回答 0