Java Erfenis
Java Erfenis (Subklas en Superklas)
In Java is dit moontlik om eienskappe en metodes van een klas na 'n ander te erf. Ons groepeer die "erfeniskonsep" in twee kategorieë:
- subklas (kind) - die klas wat van 'n ander klas erf
- superklas (ouer) - die klas waarvandaan geërf word
Om van 'n klas te erf, gebruik die extends
sleutelwoord.
In die voorbeeld hieronder, Car
erf die klas (subklas) die eienskappe en metodes van die Vehicle
klas (superklas):
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);
}
}
Het jy die protected
wysiger in Voertuig opgemerk?
Ons stel die handelsmerkkenmerk in Voertuig op 'n protected
toegangswysiger . As dit op gestel is private
, sou die Car-klas nie toegang daartoe kon kry nie.
Waarom en wanneer om "Erfenis" te gebruik?
- Dit is nuttig vir kode herbruikbaarheid: hergebruik eienskappe en metodes van 'n bestaande klas wanneer jy 'n nuwe klas skep.
Wenk: Kyk ook na die volgende hoofstuk, Polimorfisme , wat oorgeërfde metodes gebruik om verskillende take uit te voer.
Die finale sleutelwoord
As jy nie wil hê dat ander klasse van 'n klas moet erf nie, gebruik die final
sleutelwoord:
As jy probeer om toegang tot 'n final
klas te kry, sal Java 'n fout genereer:
final class Vehicle {
...
}
class Car extends Vehicle {
...
}
Die uitset sal iets soos volg wees:
Main.java:9: error: cannot inherit from final Vehicle
class Main extends
Vehicle {
^
1 error)