A.java
public class A {
String val = "A";
void print() {
System.out.println(val);
}
}
B.java
public class B extends A {
String val = "B";
@Override
void print() {
System.out.println(val);
}
}
Implementieren und führen Sie Folgendes mit diesen Klassen aus
Main.java
public class Main {
public static void main(String[] args) {
A a = new A();
//Da die B-Klasse von der A-Klasse erbt, kann A als Variablentyp verwendet werden.
A b = new B();
//Da der Typ von b A ist, verwendet val den Wert des in Typ A definierten Feldes
System.out.println("Zeige einen Wert: " + a.val); // A
System.out.println("Wert von b anzeigen: " + b.val); // A
System.out.print("Druck von a()Methode ausführen: ");
a.print(); // A
System.out.print("b drucken()Methode ausführen: ");
b.print();// B
}
}
Wenn b.val angezeigt wird, wird "A" angezeigt Weil A als Typ der Variablen b verwendet wird und das Feld von A verwendet wird.
Andererseits wird "B" in b.print () angezeigt Dies liegt daran, dass die print () -Methode in der B-Klasse überschrieben wird und die B-Klassenmethode Vorrang hat, wenn neues B () ausgeführt wird.
Beachten Sie, dass die Methode überschrieben wird, sich das Verhalten jedoch ändert, da die Variablen an das Feld gebunden sind.
Recommended Posts