Я изучаю java. У меня есть сомнения в наследовании. Когда дочерний класс расширяет родительский класс, а родительский класс имеет метод, который ссылается на переменную экземпляра, объявленную в родительском. Но дочерний класс dint переопределяет этот метод и объявил переменную экземпляра с тем же именем, что и родительский. В этом случае будет передана переменная экземпляра из дочернего элемента или будет передана родительская. Ниже приведен фрагмент кодаПеременная экземпляра наследования наследования 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();
}
}
Выход я получаю
в родительских
в детстве
Может кто-то пожалуйста мне понять, почему экземпляр своего со ссылкой родительского класса переменной a
и не дочерний класс a
.
Еще одно сомнение заключается в том, что я понял, что скрываю метод, когда есть статический метод в родительском и дочернем классах, также объявленный статическим методом с одной и той же сигнатурой. Здесь скрывается средство? какой метод скрывается? Если его родительский метод, пожалуйста, объясните мне?
Заранее спасибо.
Вы уверены, что код даже компилируется? Вы запускаете свой код? –
Это не должно компилироваться, родитель не имеет метода 'method()' –
Извините, что был отформатирован неправильно. обновил код сейчас. – Mojoy