НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Мова програмування Java. W3Schools українською. Уроки для початківців

En

Java Спадкування (Наслідування)


Java Спадкування (Субклас та Суперклас)

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

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

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

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

Приклад

class Vehicle {
  protected String brand = "Ford";        // Vehicle атрибут
  public void honk() {                    // Vehicle метод
    System.out.println("Tuut, tuut!");
  }
}

class Car extends Vehicle {
  private String modelName = "Mustang";    // Атрибут Car
  public static void main(String[] args) {

    // Створити об’єкт myCar
    Car myCar = new Car();

    // Викличте метод honk() (з класу Vehicle) для об’єкта myCar
    myCar.honk();

    // Відобразити значення атрибута brand (з класу Vehicle) і значення modelName з класу Car
    System.out.println(myCar.brand + " " + myCar.modelName);
  }
}
Спробуйте самі »

Ви помітили модифікатор protected у Vehicle?

Ми встановили атрибут brand у Vehicle як protected модифікатор доступу. Якщо для нього встановлено private, клас Car не матиме до нього доступу.

Чому і коли використовувати «Спадок»?

- Це корисно для багаторазового використання коду: повторно використовуйте атрибути та методи існуючого класу під час створення нового класу.

Порада: також перегляньте наступний розділ, Поліморфізм, який використовує успадковані методи для виконання різних завдань.


Ключове слово final

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

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

final class Vehicle {
...
}

class Car extends Vehicle {
...
}

Виведення буде приблизно таким:

Main.java:9: error: cannot inherit from final Vehicle
class Main extends Vehicle {
                  ^
1 error)
Спробуйте самі »