Uczę się java. Mam wątpliwość w dziedziczeniu. Gdy klasa podrzędna rozszerza klasę nadrzędną, a klasa nadrzędna ma metodę, która odwołuje się do zmiennej instancji zadeklarowanej w obiekcie nadrzędnym. Jednak dity klasy potomnej zastępują tę metodę i zadeklarowały zmienną instancji o tej samej nazwie, co nazwa nadrzędna. W tym przypadku zmienna instancji od dziecka zostanie przekazana lub rodzic zostanie skierowany. Poniżej znajduje się fragment koduDziedziczenie Java zmienna instancji
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();
}
}
Wyjście mogę to
w rodzica
u dziecka
Może ktoś proszę mnie zrozumieć, dlaczego wystąpienie swojego krajowego klasy nadrzędnej jest zmienna a
i nie klasa dla dzieci a
.
Inną wątpliwość jest, zrozumiałem, ukrywanie metody, gdy istnieje statyczna metoda w rodzicu i klasa potomna również zadeklarowała metodę statyczną z tą samą sygnaturą. Tu ukrywanie oznacza? jaka metoda jest ukrywana? Jeśli jest to metoda rodzica, czy możesz mi wyjaśnić?
Z góry dziękuję.
Czy na pewno Twój kod się kompiluje? Czy uruchomiłeś swój kod? –
To nie powinno się kompilować, rodzic nie ma metody "method()' –
Przepraszamy, że została źle sformatowana. zaktualizował kod teraz. – Mojoy