Was sind Vererbung und Polymorphismus im Kontext von Referenzdatentypen?
sobes.tech KI
Antwort von AI
Vererbung ist ein Mechanismus, der es ermöglicht, eine neue Klasse (abgeleitet, Kind) zu erstellen, die Felder und Methoden einer bestehenden Klasse (Basisklasse, Elternteil) erbt. Dies fördert die Wiederverwendung von Code und die Erstellung von Klassenhierarchien.
Polymorphismus ist die Fähigkeit von Objekten verschiedener Klassen, sich einheitlich zu verhalten oder beim Aufruf derselben Methode unterschiedlich zu reagieren. Es gibt zwei Hauptarten: statisch (Methodenüberladung) und dynamisch (Methodenüberschreibung).
Im Kontext von Referenzdatentypen ermöglicht die Vererbung die Erstellung einer Variablen der Basisklasse, die auf ein Objekt der abgeleiteten Klasse verweisen kann. Beim Aufruf einer Methode über eine solche Variable wird die Version der Methode des tatsächlichen Objekttyps ausgeführt, nicht die des Referenztyps (dynamischer Polymorphismus).
Beispiel in Java:
// Basisklasse
class Animal {
public void makeSound() {
System.out.println("Erzeugt einen Ton");
}
}
// Abgeleitete Klasse 1
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Wuff-Wuff");
}
}
// Abgeleitete Klasse 2
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Miau-Miau");
}
}
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Variablen vom Typ Animal, die auf ein Dog-Objekt verweisen
Animal myCat = new Cat(); // Variablen vom Typ Animal, die auf ein Cat-Objekt verweisen
myDog.makeSound(); // Ruft die Methode von Dog auf (Polymorphismus)
myCat.makeSound(); // Ruft die Methode von Cat auf (Polymorphismus)
}
}
In diesem Beispiel haben myDog und myCat den Referenztyp Animal, aber dank Polymorphismus wird beim Aufruf von makeSound() die entsprechende Implementierung von Dog bzw. Cat ausgeführt.