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, Carerf die klas (subklas) die eienskappe en metodes van die Vehicleklas (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 protectedwysiger 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 finalsleutelwoord:

As jy probeer om toegang tot 'n finalklas 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)