Dědičnost Java


Dědičnost Java (podtřída a nadtřída)

V Javě je možné dědit atributy a metody z jedné třídy do druhé. „Koncept dědičnosti“ seskupujeme do dvou kategorií:

  • podtřída (dítě) - třída, která dědí z jiné třídy
  • nadtřída (rodič) - třída, ze které se dědí

Chcete-li dědit z třídy, použijte extends klíčové slovo.

V níže uvedeném příkladu Cartřída (podtřída) dědí atributy a metody z Vehicletřídy (nadtřídy):

Příklad

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);
  }
}

Všimli jste si protectedmodifikátoru ve Vehicle?

Atribut značky ve Vehicle nastavíme na modifikátor protected přístupu . Pokud by byla nastavena na private, třída Car by k ní neměla přístup.

Proč a kdy používat „dědičnost“?

- Je to užitečné pro znovupoužitelnost kódu: při vytváření nové třídy znovu použijte atributy a metody existující třídy.

Tip: Podívejte se také na další kapitolu Polymorfismus , která používá k provádění různých úkolů zděděné metody.


Konečné klíčové slovo

Pokud nechcete, aby ostatní třídy dědily z třídy, použijte finalklíčové slovo:

Pokud se pokusíte o přístup ke finaltřídě, Java vygeneruje chybu:

final class Vehicle {
  ...
}

class Car extends Vehicle {
  ...
}

Výstup bude něco takového:

Main.java:9: error: cannot inherit from final Vehicle
class Main extends Vehicle {
                  ^
1 error)