Lernpfad:Objektorientierte Programmierung mit Java/Vererbung: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 73: Zeile 73:
   // Will die Ausgabe auch den Namen ausgeben (der in der Oberklasse als private markiert ist),
   // Will die Ausgabe auch den Namen ausgeben (der in der Oberklasse als private markiert ist),
   // muss die Methode "ausgabe()" der Oberklasse explizit aufgerufen werden.
   // muss die Methode "ausgabe()" der Oberklasse explizit aufgerufen werden.
  public void ausgabe() {
    System.out.println( "Ich bin ein " + this.rasse );
    super.ausgabe();
  }
}
</syntaxhighlight>
== Das Schlüsselwort <code>final</code> ==
Möchte man verhindern, dass eine Unterklasse eine Methode überschreibt, dann kann man sie als <code>final</code> deklarieren.
<syntaxhighlight lang="java">
class Tier {
  // Das Attribut ist private und von der Unterklasse nicht nutzbar.
  private String name;
  public Tier( String pName ) {
    this.name = pName;
  }
  public final void ausgabe() {
    System.out.println( "Mein Name ist " + this.name );
  }
}
class Hund extends Tier {
  private String rasse;
 
  public Hund( String pName, String pRasse ) {
    super(pName);
    this.rasse = pRasse;
  }
  // Fehler
   public void ausgabe() {
   public void ausgabe() {
     System.out.println( "Ich bin ein " + this.rasse );
     System.out.println( "Ich bin ein " + this.rasse );