veröffentlicht am: 30.06.2022 zuletzt aktualisiert am: 05.02.2023
Das Java Overriding ist ein Phänomen, bei dem die Unterklasse über dieselbe Methode verfügt wie die Oberklasse und ebendiese Methode überschreibt. Neben der Java Override Annotation bei Unterklassen gibt es auch noch die sogenannte Dynamische Polymorphie. Bei dieser haben wir innerhalb einer Klasse mehrere Java Methoden mit dem selben Namen, aber mit verschiedener Anzahl an Parametern. Dieser Beitrag befasst sich mit dem Thema Java Override und behandelt folgende Inhalte:
Das Überschreiben einer Methode bezieht sich auf die gleichen Methoden in der Unterklasse wie in der Oberklasse. Es gibt ein paar Java-Konventionen, die befolgt werden müssen, um eine Methode in Java zu überschreiben. Diese lauten wie folgt:
Lass und das ganze nun besser mit einigen Praxisbeispielen verstehen!
class Auto { public void show() { System.out.println("Willkommen in unserer Garage!"); } } class ElektroAutos extends Auto { @Override // Java Override Annotation public void show() { System.out.println("Das sind meine Elektroautos"); } } class HybridAutos extends Auto { @Override // Java Override Annotation public void show() { System.out.println("Das sind Hybridautos"); } } public class Main { public static void main(String[] args) { Auto meinErstesAuto = new Auto(); meinErstesAuto.show(); ElektroAutos meinElektroAuto = new ElektroAutos(); meinElektroAuto.show(); HybridAutos meinHybridAuto = new HybridAutos(); meinHybridAuto.show(); } }
Im obigen Code,
Ausgabe auf der Konsole:
Die Ausgabe zeigt, dass der Inhalt der Methode der Oberklasse und der Methoden der Unterklasse auf der Konsole angezeigt wird.
Dir ist vielleicht bereits im vorherigen Codebeispiel aufgefallen das wir @Override verwendet haben. Mit der @Override Annotation können wir dem Compiler mitteilen das wir absichtlich die Methode der Oberklasse überschreiben wollen, da wir ansonsten eine Warnmeldung auf der Konsole erhalten würden. Zudem erhältst du einen Warnhinweis, wenn die zu überschreibende Methode durch Tippfehler o.ä. nicht wie gewünscht überschrieben wird und du hast einen weitaus sauberen Code. Gewöhn dich also direkt daran die @Override Annotation zu verwenden, falls du die Methode einer Oberklasse überschreiben willst!
Das Phänomen des Überschreibens wird von der Oberklasse erzeugt und in der Unterklasse abgeschlossen. Im folgenden Code wird erläutert, wie auf eine Methode der Oberklasse nach dem Überschreiben zugegriffen werden kann.
class Autos { public void show() { System.out.println("Wir haben verschiedene Autos in der Garage"); } } class ElektroAutos extends Autos { @Override // Java Override Annotation public void show() { // Auf die show()-Methode der Oberklasse zugreifen super.show(); } } public class Main { public static void main(String[] args) { ElektroAutos meineElektroAuto = new ElektroAutos(); meineElektroAuto.show(); } }
Aus der Ausgabe geht hervor, dass der Inhalt der Methode der Oberklasse angezeigt wird.
Die Zugriffsmodifikatoren spielen auch beim Overriding eine wichtige Rolle. So können Entwickler beispielsweise unterschiedliche Zugriffsmodifikatoren für die Methode in der Oberklasse und in der Unterklasse verwenden. Ja, sie können verwendet werden, aber es sind dabei einige Regeln zu beachten. Die folgende Zeile ist die Faustregel in dieser Hinsicht:
Eine Methode in einer Unterklasse muss entweder den höheren oder den gleichwertigen Zugriffsmodifikator im Vergleich zur Methode in der Oberklasse haben.
Wenn zum Beispiel eine Methode in einer Oberklasse als protected deklariert ist, muss dieselbe Methode der Unterklasse entweder mit dem Zugriffsmodifikator public oder protected deklariert werden. Der folgende Code erzeugt eine Methode einer Unterklasse, die weniger Zugriffsrechte hat als die Methode in der Oberklasse.
class Autos { protected void show() { System.out.println("Willkommen in unserer Garage!"); } } class ElektroAutos extends Autos { @Override // Java Override Annotation private void show() { System.out.println("Das sind unsere Elektroautos"); } } public class Main { public static void main(String[] args) { ElektroAutos meinElektroAuto = new ElektroAutos(); meinElektroAuto.show(); } }
In dem obigen Code,
Da die überschreibende Methode den Zugriffsmodifikator eines geringeren Zugriffs als der der Oberklasse hat, kann die Methode nicht überschrieben werden.
Das Java Overriding tritt auf, wenn die Methode der Oberklasse in der Unterklasse mit demselben Namen, Parametern & Eigenschaften verwendet wird. Dabei sollten wir zur besseren Codequalität immer die Java Override Annotation verwenden.
😩 Gelangweilt von den Udemy & YouTube-Tutorials?!
Lerne spielerisch Java und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.
"Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."
- Lennart Sparbier
100% kostenlos registrieren · keine Kreditkarte notwendig
Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.
100% kostenlos registrieren · keine Zahlungsdaten notwendig