Ich lerne Java. Ich habe Zweifel an der Vererbung. Wenn eine untergeordnete Klasse die übergeordnete Klasse erweitert und die übergeordnete Klasse über eine Methode verfügt, die auf eine Instanzvariable verweist, die in parent deklariert ist. Die untergeordnete Klasse dint überschreibt jedoch diese Methode und hat die Instanzvariable mit demselben Namen wie die übergeordnete Instanz deklariert. In diesem Fall wird auf die Instanzvariable von child verwiesen oder es wird auf die Eltern verwiesen. Unten ist der Code-SchnipselJava-Vererbung überschreiben Instanzvariable
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();
}
}
Der Ausgang I erhalten
in Mutter
in Kind
Kann jemand mir bitte, warum die mit Bezug Elternklasse Instanzvariable a
verstehen und nicht Kinderklasse a
.
Ein weiterer Zweifel ist, ich habe verstanden, die Methode zu verstecken, wenn es eine statische Methode in Eltern- und Kind-Klasse hat auch eine statische Methode mit der gleichen Unterschrift deklariert. Hier bedeutet Verstecken? Welche Methode wird versteckt? Wenn es die Elternmethode ist, kannst du mir bitte erklären?
Vielen Dank im Voraus.
Sind Sie sicher, dass Ihr Code auch kompiliert wird? Hast du deinen Code ausgeführt? –
Dies sollte nicht kompilieren, Eltern hat keine Methode 'method()' –
Sorry, das wurde falsch formatiert. den Code jetzt aktualisiert. – Mojoy