私は明らかにこれで明白なことを見逃していますが、与えられました:
package a;
public class Class1 {
protected int a=1;
}
package b;
import a.*;
public class Class2 extends Class1 {
Class2() {
Class1 c1=new Class1();
Class2 c2=new Class2();
System.out.println(a); //1
System.out.println(c1.a); //2
System.out.println(c2.a); //3
}
}
//1 は継承によって使用されているため問題なく、//2 は継承によってアクセスされていないために失敗することはわかっていますが、なぜ //3 も問題ないのでしょうか? 変数 a は新しいオブジェクトを介してアクセスされており、a は Class1 に存在すると思いましたか?
ありがとう。