Nehmen wir an, ich habe die folgenden Klassen: < /p>
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();
< /code>
Tut mir wirklich leid, wenn dies übrigens eine dumme Frage ist. Ich komme von C ++ und soweit ich weiß, würde dies nicht in der Sprache geschrieben funktionieren. Vielen Dank im Voraus.
Polymorphismus und abstrakte Klassen in Java ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post