я явно не хватает очевидного в этом, но учитывая:java protected Почему это работает через ненаследование?
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 была доступна через новый объект и находится в Class1?
Спасибо.
не имеет отношения к актуальному вопросу, но вызов этого конструктора вызовет 'StackOverflowError'. – jlordo
Да, спасибо. Я положил его в основное, но потом взял его, чтобы сэкономить на количестве строк кода и позволить мне вставить строку // 1 :) –