diese Verwendung als Beispiel:Klärung über in Java überschreiben
class Animal{
public void move(){
System.out.println("Animals can move");
}
}
class Dog extends Animal{
public void move(){
System.out.println("Dogs can walk and run");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal reference and object
Animal b = new Dog(); // Animal reference but Dog object
a.move();// runs the method in Animal class
b.move();//Runs the method in Dog class
}
}
Ist es richtig zu sagen, hier auf b.move() aufgerufen wird, das Verfahren „move() unter der Dog-Klasse“ hat die „Bewegung außer Kraft gesetzt() unter der Animal-Klasse "wie das Dog-Objekt Vorrang hat, wenn es dieselbe Methode aufruft, wenn es von einem Animal-Typ referenziert wird?
Ich habe bemerkt, dass viele Websites dies nicht erklären, sondern sie werfen einfach Beispiele aus, ohne Zeile für Zeile durch das Zeug zu sprechen. Ich will nur meine terminologische Verwirrung klären.
Eine Randnotiz, wäre es möglich, ein Dog-Objekt zu haben, aber move() aufzurufen, das sich unter der Animal-Klasse befindet? zum Beispiel mit etwas wie:
Dog doggy = new Dog();
doggy.move()
>>>
Animals can move
>>>
Wäre das möglich? Würde ((Tier) doggy) .move() dies erreichen?
zusätzlich verwenden Sie @ Override-Notation, es verhindert, dass Sie Fehler machen, wie Schreibfehler der Methodennamen in Unterklassen. – jam