Переопределение переменной экземпляра наследования JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Переопределение переменной экземпляра наследования Java

Сообщение Anonymous »

Я изучаю Java. У меня есть сомнения по поводу наследования.
Когда дочерний класс расширяет родительский класс, а родительский класс имеет метод, который ссылается на переменную экземпляра, объявленную в родительском классе. Но дочерний класс не переопределил этот метод и объявил переменную экземпляра с тем же именем, что и родительский. В этом случае будет указана переменная экземпляра из дочернего или родительского элемента.
Ниже приведен фрагмент кода:

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

class Parent {
int a;
Parent() {
System.out.println("in Parent");
a = 10;
}
void method() {
System.out.println(a);
}
}
class Child extends Parent {
int a;
Child() {
System.out.println("in Child");
a = 11;
}
}

public class Test {
public static void main(String args[]) throws IOException {
Parent p1 = new Child();
p1.method();
}
}
Вывод, который я получаю, находится
в родительском

в дочернем

10

Я хочу понять, почему он ссылается на переменную экземпляра a родительского класса, а не на a дочернего класса.
Еще одно сомнение: я понял, что метод скрывается, когда в родительском и дочернем классе есть статический метод, а также объявлен статический метод с той же сигнатурой. Что здесь означает скрываться? Какой метод скрывается? Если это родительский метод, то почему?

Подробнее здесь: https://stackoverflow.com/questions/149 ... e-variable
Ответить

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

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

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

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

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