Sobes.tech
Junior

Was sind Vererbung und Polymorphismus in Referenzdatentypen?

sobes.tech KI

Antwort von AI

Vererbung ist ein Mechanismus, der es einer neuen Klasse (Unterklasse/Kindklasse) ermöglicht, Eigenschaften (Felder) und Verhalten (Methoden) einer bestehenden Klasse (Oberklasse/Elternklasse) zu erben, wobei die Funktionalität erweitert oder überschrieben wird. Dies fördert die Wiederverwendung von Code und stellt Beziehungen "ist ein" (is-a) her.

Polymorphismus ist die Fähigkeit von Objekten verschiedener Klassen, auf denselben Methodennamen unterschiedlich zu reagieren, abhängig von ihrem konkreten Typ zur Laufzeit. Es bietet Flexibilität und Erweiterbarkeit des Codes, indem es ermöglicht, Objekte von Unterklassen über eine Referenz auf die Oberklasse zu behandeln.

In referenziellen Datentypen (Klassen) spielen diese Konzepte eine Schlüsselrolle:

  • Vererbung: Die Unterklasse hat Zugriff auf die Mitglieder der Oberklasse und kann eigene hinzufügen oder das Verhalten geerbter Methoden ändern (Überschreiben - overriding). Ein Objekt der Unterklasse kann überall verwendet werden, wo ein Objekt der Oberklasse erwartet wird.
  • Polymorphismus: Verschiedene Objekte, die zu einer Vererbungs-Hierarchie gehören, können mit demselben Code behandelt werden, wobei derselbe Methodenaufruf erfolgt, aber die Implementierung dieser Methode spezifisch für den konkreten Objekttyp zur Laufzeit ist.

Beispiel in Java:

// Oberklasse (Eltern)
class Animal {
    public void makeSound() {
        System.out.println("Geräusch wird gemacht");
    }
}

// Unterklasse (Kind), erbt von Animal
class Dog extends Animal {
    // Überschreibt die Methode der Oberklasse
    @Override
    public void makeSound() {
        System.out.println("Wau!");
    }
}

// Unterklasse (Kind), erbt von Animal
class Cat extends Animal {
    // Überschreibt die Methode der Oberklasse
    @Override
    public void makeSound() {
        System.out.println("Miau!");
    }
}

// Beispiel für Polymorphismus
public class PolymorphismExample {
    public static void main(String[] args) {
        Animal myAnimal = new Animal(); // Objekt der Oberklasse
        Animal myDog = new Dog();       // Objekt der Unterklasse, Referenz auf Oberklasse
        Animal myCat = new Cat();       // Objekt der Unterklasse, Referenz auf Oberklasse

        myAnimal.makeSound(); // Gibt aus: Geräusch wird gemacht
        myDog.makeSound();    // Gibt aus: Wau! (Polymorphismus - Methode von Dog)
        myCat.makeSound();    // Gibt aus: Miau! (Polymorphismus - Methode von Cat)
    }
}