Informatik

Vererbung

Die Vererbungsbeziehung wird in Java mit dem Schlüsselwort extends beschrieben. Beispiel:

classDiagram
    Person <|-- Mitarbeiter
    class Person {
        -name: String
        +setzeName(pName: String)
        +gibName(): String
    }
    class Mitarbeiter {

    }
public class Person {
    private String name;
    public void setzeName(String pName) {
        name = pName;
    }
    public String gibName() {
        return name;
    }
}
public class Mitarbeiter extends Person {
    int mitarbeiterNummer
 
    public Mitarbeiter() {
        mitarbeiterNummer = 1;
    }
}

Die Klasse Mitarbeiter ist eine Spezialisierung der Klasse Person. Sie erbt die öffentlichen Attribute und Methoden der Klasse Person.

Oberklassen vererben öffentliche (public, protected) Methoden und Attribute an Unterklassen. Das heißt, dass sie wie eigene Attribute verwendet werden können.

Das heißt auf Objekte der Klasse Mitarbeiter kann zum Beispiel die Methode setzeName aufgerufen werden.

Mitarbeiter meinMitarbeiter = new Mitarbeiter();
meinMitarbeiter.setzeName("Paul");

Alle Klassen in Java erben direkt oder indirekt von der Java Basisklasse Object. Wird bei einer Klassendeklaration keine extends Klausel angegeben so wird die Klasse automatisch von der Klasse Object abgeleitet.

Prüfe dich

Gegeben sind die folgenden beiden Klassen. Beantworte die nachstehenden Fragen.

public class Fahrzeug {
    private Color farbe;
    public float geschwindigkeit;
 
    public void setzeFarbe(Color neueFarbe) {
        farbe = neueFarbe;
    }
    public Color gibFarbe() {
        return farbe;
    }
}
public class PKW extends Fahrzeug {
    private boolean hatKofferraum;
 
    public PKW(boolean pHatKofferraum) {
        hatKofferraum = pHatKofferraum;
    }
}
  1. Überprüfe, ob der folgende Quelltext gültig ist.
PKW kleinesAuto = new PKW(true);
kleinesAuto.farbe;

Nein! Das Attribut farbe ist private und somit nicht aus Unterklassen erreichbar.

  1. Überprüfe, ob der folgende Quelltext gültig ist.
PKW kleinesAuto = new PKW(true);
kleinesAuto.geschwindigkeit;

Ja! Das Attribut geschwindigkeit der Klasse Fahrzeug ist public und wird somit an die Unterklasse PKW vererbt. Daher kann auf das Attribut zugegriffen werden.

  1. Überprüfe, ob der folgende Quelltext gültig ist.
PKW kleinesAuto = new PKW(true);
kleinesAuto.gibFarbe();

Ja! Die Methode gibFarbe der Klasse Fahrzeug ist public und wird somit an die Unterklasse vererbt. Daher kann auf die Methode zugegriffen werden.

  1. Überprüfe, ob der folgende Quelltext gültig ist.
PKW kleinesAuto = new PKW(true);
kleinesAuto.hatKofferraum;

Nein! Das Attribut hatKofferraum ist private und somit nicht außerhalb der Klasse PKW verfügbar.

  1. Überprüfe, ob der folgende Quelltext gültig ist.
Fahrzeug kleinesAuto = new Fahrzeug();
kleinesAuto.hatKofferraum;

Nein! Das Attribut hatKofferraum ist nur in der Klasse PKW verfügbar, da PKW eine Unterklasse von Fahrzeug ist.

Vererbung