Java -Vererbung
Java-Vererbung (Unterklasse und Oberklasse)
In Java ist es möglich, Attribute und Methoden von einer Klasse auf eine andere zu vererben. Wir gliedern das „Vererbungskonzept“ in zwei Kategorien:
- Unterklasse (Kind) - die Klasse, die von einer anderen Klasse erbt
- Superklasse (übergeordnet) - die Klasse, von der geerbt wird
Um von einer Klasse zu erben, verwenden Sie das extends
Schlüsselwort.
Im folgenden Beispiel Car
erbt die Klasse (Unterklasse) die Attribute und Methoden von der Vehicle
Klasse (Oberklasse):
Beispiel
class Vehicle {
protected String brand = "Ford"; // Vehicle attribute
public void honk() { // Vehicle method
System.out.println("Tuut, tuut!");
}
}
class Car extends Vehicle {
private String modelName = "Mustang"; // Car attribute
public static void main(String[] args) {
// Create a myCar object
Car myCar = new Car();
// Call the honk() method (from the Vehicle class) on the myCar object
myCar.honk();
// Display the value of the brand attribute (from the Vehicle class) and the value of the modelName from the Car class
System.out.println(myCar.brand + " " + myCar.modelName);
}
}
Haben Sie den protected
Modifikator im Fahrzeug bemerkt?
Wir setzen das Markenattribut in Vehicle auf einen protected
Zugriffsmodifikator . Wenn es auf gesetzt private
wäre, würde die Autoklasse nicht darauf zugreifen können.
Warum und wann wird "Vererbung" verwendet?
- Es ist nützlich für die Wiederverwendbarkeit von Code: Verwenden Sie Attribute und Methoden einer vorhandenen Klasse wieder, wenn Sie eine neue Klasse erstellen.
Tipp: Werfen Sie auch einen Blick auf das nächste Kapitel, Polymorphism , das vererbte Methoden verwendet, um verschiedene Aufgaben auszuführen.
Das letzte Schlüsselwort
Wenn Sie nicht möchten, dass andere Klassen von einer Klasse erben, verwenden Sie das final
Schlüsselwort:
Wenn Sie versuchen, auf eine final
Klasse zuzugreifen, generiert Java einen Fehler:
final class Vehicle {
...
}
class Car extends Vehicle {
...
}
Die Ausgabe wird in etwa so aussehen:
Main.java:9: error: cannot inherit from final Vehicle
class Main extends
Vehicle {
^
1 error)