У меня есть следующий код.
class Test {
int i = 0;
Test() {
System.out.println(this);
System.out.println(this.i);
}
}
public class Demo extends Test {
int i = 10;
Demo() {
super();
System.out.println("calling super");
System.out.println(this);
System.out.println(this.i);
}
public static void main(String[] args) throws IOException {
Demo d = new Demo();
}
}
O/P : [email protected]
0
calling super
[email protected]
10
Когда я запускаю программу и печатаю значение "this", как в конструкторе суперкласса, так и в конструкторе дочернего класса, значение этого (адресное местоположение) отображается как childClassName @someValue.. Мой вопрос: почему я не получаю значение теста, т.е. Test @someVal (класс Super), когда я печатаю значение "this" в суперклассе. ASAIK, класс Super также будет иметь место/место в памяти, поэтому, почему я не получая Test @someValue в первом SOP...
PS: Я знаю, что переменные ссылаются на ссылочный тип (LHS), и методы вызываются на основе типа объекта (RHS)..