Переопределение переменных-членов в Java (скрытие переменных)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Переопределение переменных-членов в Java (скрытие переменных)

Сообщение Anonymous »

Я изучаю переопределение функций-членов в Java и подумал об эксперименте с переопределением переменных-членов.
Я определил три класса:

Код: Выделить всё

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();
}
}
Вывод:

Код: Выделить всё

1
I am class A
1
I am class B
Я не могу понять, почему, когда для aRef установлено значение b, intVal по-прежнему относится к классу A?

Подробнее здесь: https://stackoverflow.com/questions/107 ... ble-hiding
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»