ENTDECKEN – Vererbung in Java

Bei einer Vererbung in Java wird zwischen einer [b]Super- und einer Subklasse[/b] (auch Ober- und Unterklasse genannt) unterschieden. Die Superklasse ist in der Regel eine Zusammenfassung von allgemeinen [b]Attributen (Instanzvariablen) und Methoden[/b] unterschiedlicher aber ähnlicher Objekte.[br][br]Die [b]Subklasse[/b] bekommt von ihrer [b]Superklasse[/b] sämtliche Attribute und Methoden [b]vererbt[/b] (als wären sie in der Subklasse deklariert). Typischerweise wird die Subklasse um eigene Attribute und Methoden erweitert. Man spricht hier von einer[b] Spezialisierung der Subklasse [/b]von der Superklasse. Eine Vererbung in Java findet über das Schlüsselwort [i]extends[/i] statt.[br][br]Die [b]Klasse Vehicle[/b] besitzt [b]Attribute (Instanzvariablen)[/b] die auf alle Arten von Fahrzeugen anwendbar sind (noTires, id). Die [b]Klassen Car[/b] und [b]Bike[/b] [b]erben[/b] alle Attribute der [b]Klasse Vehicle[/b]. Wir fassen alle Klassen im Kontext der Fahrzeuge [b]in einem Paket vehicles[/b] zusammen.[br][br]Die [b]Methode [i]toString()[/i][/b] verwendet eine [b]Methode getVehicleType()[/b], die in allen Subklassen überschrieben wird, und kann somit den richtigen Typ für jedes Fahrzeug bei der textuellen Repräsentation voranstellen.
Superklasse Vehicle
Die [b]Klasse Car[/b] ist eine [b]Sub[/b]klasse der [b]Klasse Vehicle[/b] ([i]Car extends Vehicle[/i]), und verfügt somit auch über deren Attribute [i]noTires[/i] und [i]id[/i]. [br][br]Im Konstruktor der [b]Klasse Car[/b] wird mittels [b][i]super(id, 4)[/i][/b] der Konstruktor der Superklasse Vehicle aufgerufen (der super Aufruf muss immer die erste Anweisung sein). Diesem wird die Variable [i]id[/i] übergeben, sowie 4 für die Variable [i]noTires[/i] (wir nehmen an, dass in unserem Beispiel alle Autos 4 Reifen haben). [br][br]Zusätzlich zu den bereits geerbten Attributen der [b]Super[/b]klasse können in der [b]Sub[/b]klasse weitere Attribute definiert werden. Im Fall von Car sind dies die Attribute manufacturer und model.
Subklasse Car
Neben der [b]Klasse Car[/b] kann eine weitere [b]Sub[/b]klasse der [b]Klasse Vehicle[/b] ([i]Bike extends Vehicle[/i]) definiert werden. In Java kann man durch Vererbung eine Klassenhierarchie bilden. [br][br]Die [b]Klasse Bike[/b] unterscheidet sich insofern von Car, dass sie zwar die Attribute der Superklasse vererbt bekommt ([i]id, noTires[/i]), jedoch andere zusätzliche Elemente besitzt: [i]type[/i] und [i]noGears[/i] anstatt [i]manufacturer[/i] und [i]model[/i]. [br][br]Geerbte Attribute und Methoden werden unverändert übernommen. Man kann geerbte Methoden in Java aber auch überschreiben, d.h. mit gleicher Schnittstelle neu deklarieren, und somit eine eigene Version der Methode implementieren. Die geerbte Methode wird somit ersetzt. [br][br]Die [b][i]toString[/i] Methode[/b] der [b]Klasse Vehicle[/b] wird in der [b]Klasse Bike[/b] überschrieben. Dabei wird auf eine Methode der Superklasse zugegriffen: mittels [i][b]super.toString()[/b][/i] kann die toString-Methode der Klasse Vehicle aufgerufen werden.
Klasse Bike
In der [b]Test-Klasse VehiclesTest [/b]werden nun alle vorher definierten Klassen verwendet: Variablen vom [b]Typ Vehicle[/b] können sowohl [b]Objekte[/b] vom [b]Typ Car[/b] (siehe v1), als auch [b]Objekte[/b] vom [b]Typ Bike[/b] (siehe v5) zugewiesen werden. [br][br]Methoden, die in der [b]Klasse Vehicle[/b] als [i]public[/i] markiert sind, können auch von Objekten einer Subklasse aufgerufen werden. Zum Beispiel, [b][i]car3.setId(..) [/i][/b]ruft die setter-Methode der Instanzvariable [i]id[/i] auf, die in Vehicle definiert wurde.
Klasse VehiclesTest
Ausgabe
Teste nun das fertig implementiere Programm im kooperativen Online-Editor repl.it:[br][br][list][*][url=https://repl.it/@IrisGroher/Vehicles]https://repl.it/@IrisGroher/Vehicles[/url][/*][/list]

Information: ENTDECKEN – Vererbung in Java