Vererbung

**This is an old revision of the document!**

Vererbung

Superklasse und Subklasse

Vererbung ist ein grundlegendes Konzept in der objektorientierten Programmierung (OOP), das es ermöglicht, eine neue Klasse auf Basis einer bestehenden Klasse zu erstellen. Die neue Klasse, die als Subklasse oder Kindklasse bezeichnet wird, erbt die Eigenschaften und Methoden der bestehenden Klasse, die als Superklasse oder Elternklasse bezeichnet wird. Dies fördert die Wiederverwendbarkeit von Code und die Hierarchisierung von Klassen.

Superklasse

Stellen wir uns vor, wir entwickeln eine Anwendung für ein Tierheim. Wir beginnen mit einer allgemeinen Klasse Tier, die grundlegende Eigenschaften und Methoden für alle Tiere definiert.

Main.java

 // Superklasse public class Tier { private String name; private int alter;
 
 
  public Tier(String name, int alter) {
      this.name = name;
      this.alter = alter;
  }
 
  public void makeSound() {
      System.out.println("Das Tier macht ein Geräusch");
  }
 
  // Getter und Setter
  public String getName() {
      return name;
  }
 
  public void setName(String name) {
      this.name = name;
  }
 
  public int getAlter() {
      return alter;
  }
 
  public void setAlter(int alter) {
      this.alter = alter;
  }
 
}

Subklasse

Nun erstellen wir eine Subklasse Hund, die von der Klasse Tier erbt. Die Klasse Hund wird die Eigenschaften und Methoden der Klasse Tier übernehmen und kann zusätzliche Eigenschaften und Methoden hinzufügen oder bestehende Methoden überschreiben.

In diesem Beispiel erbt die Klasse Hund die Eigenschaften name und alter sowie die Methode makeSound von der Klasse Tier.

Aufruf des Konstruktors der Superklasse: super()

Überschreiben von Methoden der Superklass: @override

Die Methode makeSound wird in der Klasse Hund überschrieben, um ein spezifisches Verhalten für Hunde zu definieren.

Hund.java

 // Subklasse public class Hund extends Tier { private String rasse;
 
 
  public Hund(String name, int alter, String rasse) {
      super(name, alter); // Aufruf des Konstruktors der Superklasse
      this.rasse = rasse;
  }
 
  @Override
  public void makeSound() {
      System.out.println("Der Hund bellt");
  }
 
  // Getter und Setter
  public String getRasse() {
      return rasse;
  }
 
  public void setRasse(String rasse) {
      this.rasse = rasse;
  }
 
}

Aufruf des Konstruktors der Superklasse: super() === <code java [enable_line_numbers="true", start_line_numbers_at="10", highlight_lines_extra="10"] | Hund.java> @Override public void makeSound() { System.out.println("Der Hund bellt"); } </code> === Überschreiben von Methoden der Superklass: @override

Die Methode makeSound wird in der Klasse Hund überschrieben, um ein spezifisches Verhalten für Hunde zu definieren.

Hund.java

 Insert_Code 

Zusammenspiel/ Verwendung der Klassen

Main.java

 public class Main { public static void main(String[] args) { Tier allgemeinesTier = new Tier("Allgemeines Tier", 5); allgemeinesTier.makeSound(); // Ausgabe: Das Tier macht ein Geräusch
 
 
      Hund meinHund = new Hund("Bello", 3, "Labrador");
      meinHund.makeSound(); // Ausgabe: Der Hund bellt
 
      System.out.println("Name: " + meinHund.getName()); // Ausgabe: Name: Bello
      System.out.println("Alter: " + meinHund.getAlter()); // Ausgabe: Alter: 3
      System.out.println("Rasse: " + meinHund.getRasse()); // Ausgabe: Rasse: Labrador
  }
 
}