Java -erfenis
Java-overerving (subklasse en superklasse)
In Java is het mogelijk om attributen en methoden van de ene klasse naar de andere te erven. We groeperen het "erfenisconcept" in twee categorieën:
- subklasse (kind) - de klasse die erft van een andere klasse
- superklasse (ouder) - de klasse waarvan wordt geërfd
Gebruik het extends
trefwoord om van een klasse te erven.
In het onderstaande voorbeeld neemt de Car
klasse (subklasse) de attributen en methoden over van de Vehicle
klasse (superklasse):
Voorbeeld
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);
}
}
Heb je de protected
modifier in Vehicle opgemerkt?
We stellen het merkkenmerk in Voertuig in op een protected
toegangsmodifier . Als deze was ingesteld op private
, zou de autoklasse er geen toegang toe hebben.
Waarom en wanneer "Overerving" gebruiken?
- Het is handig voor herbruikbaarheid van code: hergebruik attributen en methoden van een bestaande klasse wanneer u een nieuwe klasse aanmaakt.
Tip: kijk ook eens naar het volgende hoofdstuk, Polymorfisme , dat overgeërfde methoden gebruikt om verschillende taken uit te voeren.
Het laatste trefwoord
Als je niet wilt dat andere klassen van een klasse erven, gebruik dan het final
trefwoord:
Als u toegang probeert te krijgen tot een final
klasse, genereert Java een fout:
final class Vehicle {
...
}
class Car extends Vehicle {
...
}
De uitvoer zal ongeveer als volgt zijn:
Main.java:9: error: cannot inherit from final Vehicle
class Main extends
Vehicle {
^
1 error)