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