次のクラスを検討してください。
public class A {
public void foo() {
System.out.println("A.foo()");
}
public void bar() {
System.out.println("A.bar()");
foo();
}
}
public class B extends A {
public void foo() {
System.out.println("B.foo()");
}
public static void main(String[]
args) {
A a = new B();
a.bar();
}
}
このコードの出力はA.bar()
、次にB.foo()
. public
メソッド foo() のアクセス レベルをからprivate
出力に変更すると、次のようになることに気付きましA.bar()
たA.foo()
。
なんで?