Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Принципи ООП: Наслідування | ООП
Java ООП
course content

Зміст курсу

Java ООП

Java ООП

1. Як Працювати з IDE?
2. ООП
3. Інтерфейс

book
Принципи ООП: Наслідування

Наслідування

Розглянемо принцип ООП — Наслідування.

Наслідування — це механізм, який дозволяє створювати класи на основі іншого класу.

  • Клас, який використовується як основа, називається батьківським або суперкласом;

  • Клас, створений на основі батьківського класу, називається дочірнім, підкласом або нащадком.

Таким чином, дочірній клас може успадковувати характеристики та властивості іншого класу — батьківського класу (його методи та змінні).

Наслідування класу здійснюється за допомогою ключового слова extends. Синтаксис для дочірнього класу, який наслідує батьківський клас, виглядає так:

Child.java

Child.java

copy
123
class Child extends Parent { // properties and methods }

Розглянемо приклад, як працює наслідування в коді. Маємо клас Bird з певними полями та методами, а також клас Parrot з власними полями та методами. Папуга є птахом, тому логічно, що папуга має наслідувати клас Bird:

Ось код із скріншоту, переписаний для кращої читабельності та зрозумілості:

Bird.java

Bird.java

Parrot.java

Parrot.java

Main.java

Main.java

copy
12345678910111213141516171819
package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }

Розгляньмо, що відбувається на цих зображеннях:

  1. Ми створюємо клас Bird, який у нашому випадку є батьківським класом. Цей клас має власні поля та методи;

  2. Ми створюємо клас Parrot, який використовує ключове слово extends для наслідування від батьківського класуBird. Клас Parrot є дочірнім класом і має власні поля та методи. Крім того, як дочірній клас, Parrotнаслідує всі поля та методи батьківського класу Bird;

  3. Ми створюємо об'єкт класу Parrot у методі main і бачимо, що можемо ініціалізувати поля якбатьківського, так і дочірнього класів. Спочатку ініціалізуємо поля батьківського класу Bird, а потім — поля дочірнього класу Parrot. Далі викликаємо методи: спочатку методи батьківського класу, а потім метод дочірнього класу.

Таким чином, ми використали наслідування для успадкування класу Bird.

Навіщо це потрібно?

Коли у нас є багато різних підкласів Bird, не лише Parrot, наприклад, ще Pigeon та Penguin. У такому випадку буде багато дубльованих полів, наприклад, boolean canFly. Перше, чим допомагає наслідування — це уникнення дублювання коду. Крім того, це суттєво покращує читабельність. На практиці ви рідко зустрічаєте клас Bird і його підкласи напряму, але наслідування часто використовується, особливо з інтерфейсами.

Note

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

Правила наслідування

  • Наслідувати можна лише один клас. Java не підтримує множинне наслідування. Один клас може мати лише одного батька;

  • Наслідується все, крім змінних і методів з модифікатором private.

Note

Не можна наслідувати самого себе!

Раніше я згадував, що підклас матиме доступ до всіх змінних і методів батьківського класу. Проте це не зовсім так.

Насправді всі методи й змінні, позначені модифікатором private, недоступні для підкласу.

  • Перевизначення методу батьківського класу.

Уявімо, що ми наслідуємо клас, але деякі частини успадкованого коду нам не підходять. Припустимо, ми хочемо, щоб певний метод працював інакше, ніж у батьківському класі.

Щоб перевизначити метод із батьківського класу, потрібно написати @Override над ним:

Parrot.java

Parrot.java

copy
1234
@Override public void eat() { System.out.println("The parrot is eating"); }

У наведеному вище коді ми перевизначили метод батьківського класу, і тепер, коли цей метод викликається з дочірнього класу, буде виконано перевизначений метод!

  • Запобігання наслідуванню.

Якщо ви не бажаєте, щоб хтось наслідував ваш клас, використовуйте модифікатор final перед ним. Наприклад:

Bird.java

Bird.java

Parrot.java

Parrot.java

copy
123
public final class Bird { // fields and methods }

Таким чином, використовуючи ключове слово final, ми заборонили наслідування класу Bird.

Це лише основні правила та особливості наслідування. Це об'ємна тема, яку ви будете часто використовувати. Протягом курсу ви ознайомитеся з іншими аспектами наслідування та будете застосовувати їх частіше.

1. Навіщо потрібне наслідування в Java?

2. Скільки класів можна наслідувати одночасно?

3. Як можна запобігти наслідуванню в Java?

question mark

Навіщо потрібне наслідування в Java?

Select the correct answer

question mark

Скільки класів можна наслідувати одночасно?

Select the correct answer

question mark

Як можна запобігти наслідуванню в Java?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

course content

Зміст курсу

Java ООП

Java ООП

1. Як Працювати з IDE?
2. ООП
3. Інтерфейс

book
Принципи ООП: Наслідування

Наслідування

Розглянемо принцип ООП — Наслідування.

Наслідування — це механізм, який дозволяє створювати класи на основі іншого класу.

  • Клас, який використовується як основа, називається батьківським або суперкласом;

  • Клас, створений на основі батьківського класу, називається дочірнім, підкласом або нащадком.

Таким чином, дочірній клас може успадковувати характеристики та властивості іншого класу — батьківського класу (його методи та змінні).

Наслідування класу здійснюється за допомогою ключового слова extends. Синтаксис для дочірнього класу, який наслідує батьківський клас, виглядає так:

Child.java

Child.java

copy
123
class Child extends Parent { // properties and methods }

Розглянемо приклад, як працює наслідування в коді. Маємо клас Bird з певними полями та методами, а також клас Parrot з власними полями та методами. Папуга є птахом, тому логічно, що папуга має наслідувати клас Bird:

Ось код із скріншоту, переписаний для кращої читабельності та зрозумілості:

Bird.java

Bird.java

Parrot.java

Parrot.java

Main.java

Main.java

copy
12345678910111213141516171819
package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }

Розгляньмо, що відбувається на цих зображеннях:

  1. Ми створюємо клас Bird, який у нашому випадку є батьківським класом. Цей клас має власні поля та методи;

  2. Ми створюємо клас Parrot, який використовує ключове слово extends для наслідування від батьківського класуBird. Клас Parrot є дочірнім класом і має власні поля та методи. Крім того, як дочірній клас, Parrotнаслідує всі поля та методи батьківського класу Bird;

  3. Ми створюємо об'єкт класу Parrot у методі main і бачимо, що можемо ініціалізувати поля якбатьківського, так і дочірнього класів. Спочатку ініціалізуємо поля батьківського класу Bird, а потім — поля дочірнього класу Parrot. Далі викликаємо методи: спочатку методи батьківського класу, а потім метод дочірнього класу.

Таким чином, ми використали наслідування для успадкування класу Bird.

Навіщо це потрібно?

Коли у нас є багато різних підкласів Bird, не лише Parrot, наприклад, ще Pigeon та Penguin. У такому випадку буде багато дубльованих полів, наприклад, boolean canFly. Перше, чим допомагає наслідування — це уникнення дублювання коду. Крім того, це суттєво покращує читабельність. На практиці ви рідко зустрічаєте клас Bird і його підкласи напряму, але наслідування часто використовується, особливо з інтерфейсами.

Note

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

Правила наслідування

  • Наслідувати можна лише один клас. Java не підтримує множинне наслідування. Один клас може мати лише одного батька;

  • Наслідується все, крім змінних і методів з модифікатором private.

Note

Не можна наслідувати самого себе!

Раніше я згадував, що підклас матиме доступ до всіх змінних і методів батьківського класу. Проте це не зовсім так.

Насправді всі методи й змінні, позначені модифікатором private, недоступні для підкласу.

  • Перевизначення методу батьківського класу.

Уявімо, що ми наслідуємо клас, але деякі частини успадкованого коду нам не підходять. Припустимо, ми хочемо, щоб певний метод працював інакше, ніж у батьківському класі.

Щоб перевизначити метод із батьківського класу, потрібно написати @Override над ним:

Parrot.java

Parrot.java

copy
1234
@Override public void eat() { System.out.println("The parrot is eating"); }

У наведеному вище коді ми перевизначили метод батьківського класу, і тепер, коли цей метод викликається з дочірнього класу, буде виконано перевизначений метод!

  • Запобігання наслідуванню.

Якщо ви не бажаєте, щоб хтось наслідував ваш клас, використовуйте модифікатор final перед ним. Наприклад:

Bird.java

Bird.java

Parrot.java

Parrot.java

copy
123
public final class Bird { // fields and methods }

Таким чином, використовуючи ключове слово final, ми заборонили наслідування класу Bird.

Це лише основні правила та особливості наслідування. Це об'ємна тема, яку ви будете часто використовувати. Протягом курсу ви ознайомитеся з іншими аспектами наслідування та будете застосовувати їх частіше.

1. Навіщо потрібне наслідування в Java?

2. Скільки класів можна наслідувати одночасно?

3. Як можна запобігти наслідуванню в Java?

question mark

Навіщо потрібне наслідування в Java?

Select the correct answer

question mark

Скільки класів можна наслідувати одночасно?

Select the correct answer

question mark

Як можна запобігти наслідуванню в Java?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2
some-alt