Java Inheritance

Оновлено: 22.05.2023

Успадкування в Java (підкласи та суперкласи)

У мові Java існує можливість успадковувати атрибути та методи від одного класу до іншого. Ми згрупували "концепцію успадкування" у дві категорії:

підклас (дочірній) - клас, що успадковується від іншого класу суперклас (батьківський) - клас, від якого успадковується клас

Щоб успадкувати клас, використовуйте ключове слово extends.

У наведеному нижче прикладі клас Car (підклас) успадковує атрибути та методи від класу Vehicle (суперкласу):

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);
  }
}
Ви помітили захищений модифікатор у Vehicle? Ми встановили для атрибута бренду в Vehicle захищений модифікатор доступу. Якби він був приватним, клас Car не мав би до нього доступу. Навіщо і коли використовувати "Спадкування"? - Це корисно для повторного використання коду: повторне використання атрибутів і методів існуючого класу при створенні нового класу. Порада: Також ознайомтеся з наступною главою "Поліморфізм", яка використовує успадковані методи для виконання різних завдань.

Останнє ключове слово

Якщо ви не хочете, щоб інші класи успадковували клас, використовуйте ключове слово final:

Якщо ви спробуєте отримати доступ до кінцевого класу, Java видасть помилку:

final
final class Vehicle {
  ...
}

class Car extends Vehicle {
  ...
}

На виході вийде щось на кшталт цього:

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