public class A
{
public int intVal = 1;
public void identifyClass()
{
System.out.println("I am class A");
}
}
public class B extends A
{
public int intVal = 2;
public void identifyClass()
{
System.out.println("I am class B");
}
}
public class MainClass
{
public static void main(String[] args)
{
A a = new A();
B b = new B();
A aRef;
aRef = a;
System.out.println(aRef.intVal);
aRef.identifyClass();
aRef = b;
System.out.println(aRef.intVal);
aRef.identifyClass();
}
}
Я изучаю переопределение функций-членов в Java и подумал об эксперименте с переопределением переменных-членов. Я определил три класса: [code]public class A { public int intVal = 1; public void identifyClass() { System.out.println("I am class A"); } }
public class B extends A { public int intVal = 2; public void identifyClass() { System.out.println("I am class B"); } }
public class MainClass { public static void main(String[] args) { A a = new A(); B b = new B(); A aRef; aRef = a; System.out.println(aRef.intVal); aRef.identifyClass(); aRef = b; System.out.println(aRef.intVal); aRef.identifyClass(); } } [/code] Вывод: [code]1 I am class A 1 I am class B [/code] Я не могу понять, почему, когда для aRef установлено значение b, intVal по-прежнему относится к классу A?