Menu
Coddy logo textTech

Was ist Polymorphie?

Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy. Lektion 35 von 56.

Polymorphismus ist ein grundlegendes Prinzip der objektorientierten Programmierung, das es Objekten verschiedener Klassen ermöglicht, auf dieselbe Methode auf unterschiedliche Weise zu reagieren.

In JavaScript tritt Polymorphismus am häufigsten auf, wenn Kindklassen Methoden von Elternklassen überschreiben.

Erstellen wir eine einfache Elternklasse mit einer speak()-Methode:

class Animal {
  constructor(name) {
    this.name = name;
  }
  
  speak() {
    return `${this.name} makes a sound`;
  }
}

Erstellen wir nun eine Kindklasse, die Animal erweitert:

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

Hier ist eine weitere abgeleitete Klasse:

class Cat extends Animal {
  speak() {
    return `${this.name} meows`;
  }
}

Jede Kindklasse implementiert die speak()-Methode anders. Das ist Polymorphismus in Aktion!

Wir können jetzt verschiedene Objekte erstellen und dieselbe Methode für jedes aufrufen:

const animal = new Animal("Some animal");
const dog = new Dog("Rex");
const cat = new Cat("Whiskers");

console.log(animal.speak()); // Irgendein Tier macht ein Geräusch
console.log(dog.speak());    // Rex bellt
console.log(cat.speak());    // Whiskers miaut

Alle drei Objekte reagieren auf die speak()-Methode, aber jedes tut dies auf seine eigene Weise.

challenge icon

Aufgabe

Du hast ein Benachrichtigungssystem mit einer übergeordneten Klasse Notification und zwei untergeordneten Klassen. Deine Aufgabe besteht darin, jeder untergeordneten Klasse die Methode send(message) mit unterschiedlichen Implementierungen hinzuzufügen.

  1. In der Klasse EmailNotification sollte die Methode die Zeichenfolge „Sending '(message)' via Email“ zurückgeben.
  2. In der Klasse SMSNotification sollte die Methode die Zeichenfolge „Sending '(message)' via SMS“ zurückgeben.

Probier es selbst

import { EmailNotification } from './email-notification.js';
import { SMSNotification } from './sms-notification.js';

// Testcode – nicht ändern
const email = new EmailNotification();
const sms = new SMSNotification();

console.log(email.send("Hello!"));  // Sollte EmailNotification's send() verwenden
console.log(sms.send("Hello!"));    // Sollte SMSNotification's send() verwenden
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-JavaScript-Compiler