Code: Select all
public abstract class Animal {
public abstract void talk();
}
class Dog extends Animal {
@Override
public void talk() {
System.out.println("Woof");
}
}
class Cat extends Animal {
@Override
public void talk() {
System.out.println("Meow");
}
}
< /code>
Jetzt erstelle ich eine neue Klasse zum Testen und möchte eine Methode, die die entsprechende Talk () -Methode für den als Parameter bestandenen Tierart aufruft. Dann nenne ich die Methode auf Objekten Hund und Katze. < /P>
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
Test t = new Test();
t.makeAnimalTalk(dog);
t.makeAnimalTalk(cat);
}
public void makeAnimalTalk(Animal animal) {
animal.talk();
}
}
< /code>
Und das funktioniert. Aber was mich stört, ist Folgendes: < /p>
public void makeAnimalTalk(Animal animal) {
animal.talk();
}
< /code>
Der hier übergebene Parameter enthält Klassentyp -Tier, eine abstrakte Klasse. Ich weiß sehr gut, dass wir keine Objekte einer abstrakten Klasse machen können. Was ist also Tier? Wie funktioniert das? Das Programm funktioniert auch, wenn ich so etwas mache: < /p>
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();