CodeGym /Java Kurs /Frontend SELF DE /Vererbung von Klassen

Vererbung von Klassen

Frontend SELF DE
Level 40 , Lektion 0
Verfügbar

7.1 Grundlagen der Vererbung

Die Vererbung von Klassen in JavaScript ermöglicht es, neue Klassen auf Grundlage bereits existierender zu erstellen, deren Funktionalität wiederzuverwenden und zu erweitern. Das ist ein essenzieller Aspekt der objektorientierten Programmierung (OOP), mit dem man Klassenhierarchien schaffen und das Verhalten von Objekten steuern kann.

Für die Vererbung von Klassen wird das Schlüsselwort extends verwendet. Eine Klasse, die eine andere Klasse erbt, wird als abgeleitete Klasse (subclass) bezeichnet, und die Klasse, von der geerbt wird, als Basisklasse (superclass).

Beispiel:

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        speak() {
          console.log(`${this.name} barks.`);
        }
      }

      const dog = new Dog('Rex');
      dog.speak(); // "Rex barks."
    
  

Erklärung:

  • Die Klasse Animal ist die Basisklasse mit einem Konstruktor und der Methode speak()
  • Die Klasse Dog erbt von Animal und überschreibt die Methode speak()
  • Die Instanz dog der Klasse Dog nutzt die überschriebene Methode speak()

7.2 Das Schlüsselwort super

Das Schlüsselwort super wird verwendet, um den Konstruktor oder Methoden der Basisklasse aus der abgeleiteten Klasse aufzurufen.

1. Aufruf des Konstruktors der Basisklasse

Die abgeleitete Klasse muss den Konstruktor der Basisklasse mit super() aufrufen, bevor this verwendet wird.

Beispiel:

Der Konstruktor Dog ruft super(name) auf, um die Eigenschaft name der Basisklasse Animal zu initialisieren.

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        constructor(name, breed) {
          super(name);
          this.breed = breed;
        }

        speak() {
          console.log(`${this.name} barks.`);
        }
      }

      const dog = new Dog('Rex', 'Labrador');
      console.log(dog.name); // "Rex"
      console.log(dog.breed); // "Labrador"
      dog.speak(); // "Rex barks."
    
  

2. Aufruf von Methoden der Basisklasse

Methoden der Basisklasse können aus der abgeleiteten Klasse mit super aufgerufen werden.

Beispiel:

Die Methode speak() der Klasse Dog ruft die Methode speak() der Basisklasse Animal mit super.speak() auf, bevor sie ihre eigene Logik ausführt.

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        speak() {
          super.speak(); // Aufruf der Methode der Basisklasse
          console.log(`${this.name} barks.`);
        }
      }

      const dog = new Dog('Rex');
      dog.speak();

      // "Rex makes a noise."
      // "Rex barks."
    
  

7.3 Vererbung und Überschreiben von Methoden

Die Vererbung ermöglicht es den abgeleiteten Klassen, Methoden der Basisklasse zu überschreiben. Das bietet die Möglichkeit, die Funktionalität von Methoden zu verändern oder zu erweitern.

Beispiel:

Die Methode speak() der Klasse Dog überschreibt die Methode speak() der Basisklasse Animal und bietet eine eigene Implementierung.

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        speak() {
          console.log(`${this.name} barks.`);
        }
      }

      const animal = new Animal('Generic Animal');
      animal.speak(); // "Generic Animal makes a noise."

      const dog = new Dog('Rex');
      dog.speak(); // "Rex barks."
    
  

7.4 Vererbung und zusätzliche Methoden

Die abgeleitete Klasse kann neue Methoden hinzufügen, die in der Basisklasse nicht existieren.

Beispiel:

Die Klasse Dog fügt eine neue Methode fetch() hinzu, die in der Basisklasse Animal nicht existiert.

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        speak() {
          console.log(`${this.name} barks.`);
        }

        fetch() {
          console.log(`${this.name} is fetching.`);
        }
      }

      const dog = new Dog('Rex');
      dog.speak(); // "Rex barks."
      dog.fetch(); // "Rex is fetching."
    
  

7.5 Überprüfung der Vererbung

Zur Überprüfung der Vererbung kann der Operator instanceof und die Methode isPrototypeOf() verwendet werden.

Beispiel:

Der Operator instanceof überprüft, ob ein Objekt eine Instanz einer Klasse ist. Die Methode isPrototypeOf() überprüft, ob das Prototypenobjekt Teil der Prototypenkette eines anderen Objekts ist.

JavaScript
    
      console.log(dog instanceof Dog); // true
      console.log(dog instanceof Animal); // true
      console.log(Animal.prototype.isPrototypeOf(Dog.prototype)); // true
    
  
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION