1. Wale und Kühe

Hier ist eine interessante zoologische Tatsache: Eine Kuh ist einem Wal viel näher als beispielsweise einem Nilpferd. Es stellt sich heraus, dass Kühe und Wale relativ nahe Verwandte sind.

Schau hier. Lassen Sie uns etwas über Polymorphismus erzählen – ein weiteres sehr leistungsfähiges Werkzeug von OOP . Es verfügt über vier Funktionen.


2. Vererbung ist kein Allheilmittel

Stellen Sie sich vor, Sie haben eine CowKlasse für ein Spiel geschrieben. Es gibt viele Felder und Methoden. Objekte dieser Klasse können verschiedene Dinge tun: gehen, essen und schlafen. Kühe tragen auch eine Glocke, die beim Gehen klingelt. Angenommen, Sie haben alles in der Klasse bis ins kleinste Detail umgesetzt.

Und dann kommt Ihre Kundin und sagt, sie möchte ein neues Spiellevel veröffentlichen, in dem die gesamte Action auf See stattfindet und die Hauptfigur ein Wal ist.

Sie beginnen mit dem Entwurf einer Klasse und stellen fest, dass sie sich nur geringfügig von der Klasse Whaleunterscheidet . CowDie Logik beider Klassen ist sehr ähnlich und Sie entscheiden sich für die Vererbung.

Polymorphismus in Java

Die CowKlasse eignet sich ideal, um die Rolle der Mutterklasse zu übernehmen: Sie verfügt über alle notwendigen Variablen und Methoden. Alles, was wir tun müssen, ist, dem Wal die Fähigkeit zu geben, zu schwimmen. Aber es gibt ein Problem: Ihr Wal hat Beine, Hörner und eine Glocke. Schließlich ist diese Funktionalität innerhalb der CowKlasse implementiert. Was kann man hier tun?

Polymorphismus in Java.  Nachlass

3. Methodenüberschreibung

Das Überschreiben von Methoden kommt uns zu Hilfe. Wenn wir eine Methode geerbt haben, die in unserer neuen Klasse nicht ganz das tut, was wir wollen, können wir diese Methode durch eine andere ersetzen.

Überschreibende Methode

Wie wird das gemacht? In unserer Nachkommenklasse deklarieren wir dieselbe Methode wie die Methode der Elternklasse, die wir überschreiben möchten. Darin schreiben wir unseren neuen Code. Und das ist alles – es ist, als ob die alte Methode in der übergeordneten Klasse einfach nicht existiert.

So funktioniert es:

Code Beschreibung
class Cow
{
   public void printColor ()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a cow");
   }
}

class Whale extends Cow
{
   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
  • Hier werden zwei Klassen definiert – CowundWhale
  • WhaleerbtCow
  • Die WhaleKlasse überschreibt die printName()Methode
public static void main(String[] args)
{
   Cow cow = new Cow();
   cow.printName();
}
Dieser Code zeigt den folgenden Text auf dem Bildschirm an:
I'm a cow
public static void main(String[] args)
{
   Whale whale = new Whale();
   whale.printName();
}
Dieser Code zeigt Folgendes auf dem Bildschirm an:
I'm a whale

Nach dem Erben der CowKlasse und dem Überschreiben der printNameMethode Whaleenthält die Klasse tatsächlich die folgenden Daten und Methoden:

class Whale
{
   public void printColor()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
Wir kennen keine alte Methode.