Спадкування є центральною концепцією в об'єктно-орієнтованому програмуванні (ООП) і часто розглядається як один з будівельних блоків для підвищення ефективності. У цьому навчальному посібнику ти поглибиш свої знання про спадкування в Java. Ти навчишся, як працювати із модифікаторами доступу, використовувати конструктори і яку роль відіграє інкапсуляція в спадкуванні.
Найважливіші висновки
- Спадкування дозволяє успадковувати властивості та методи класу.
- Модифікатор доступу private обмежує доступ до змінних або методів, тоді як protected забезпечує розширений доступ у класах, які успадковують від початкового класу.
- Конструктори повинні викликатися в підкласі, щоб об'єкти були правильно створені.
- Методи інтерфейсу можуть бути узагальнені, якщо в тебе є кілька специфічних класів.
Покрокова інструкція
Модифікатори доступу: protected vs. private
Якщо ти в класі, наприклад, Транспортний засіб, оголосиш змінну (наприклад, Колір) як protected, тоді ти можеш використовувати цю змінну в похідному класі (наприклад, Автомобіль) безпосередньо. Якщо ти оголосиш змінну як private, то в підкласі не зможеш безпосередньо отримати до неї доступ.

Це означає, що доступ до private-змінних можливий лише через методи-сеттери та методи-геттери.
Приклад демонструє, що ми повинні використовувати setFarbe та getFarbe, щоб отримати доступ до private-змінної farbe.

Якщо змінна оголошена як protected, ти можеш легко отримати до неї доступ у класі Автомобіль і змінити значення.
Використання конструкторів у спадкуванні
При визначенні підкласу ти повинен забезпечити правильний виклик конструктора батьківського класу.

Це забезпечує правильну ініціалізацію кольору під час створення об'єкта Автомобіль.

Переконайся, що в підкласі ти визначаєш конструктор, який адекватно передає параметри батьківського класу.
Спадкування та виклики методів
Два класи, Транспортний засіб і Автомобіль, дозволяють тобі використовувати загальні змінні та методи. Якщо ти визначиш метод у Транспортному засобі, ти також можеш використовувати цей метод у Автомобілі, не переписуючи його знову.

Тут викликається метод fahrzeugFarbeAusgeben, який виводить значення кольору, що надається методом getFarbe.
Обмеження доступу до методів
Якщо ти намагаєшся викликати метод у підкласі, який недоступний для класу, ти отримаєш помилку компіляції. У нашому прикладі для виклику методу getFarbe повинен бути переданий об'єкт Транспортного засобу.

Це практично означає, що ти повинен переконатися, що метод відповідає твоєму типу даних, перш ніж його викликати. Ти можеш передати велосипед, автомобіль або обидва до методу, який лише очікує об'єкти Транспортного засобу.
Приклад виклику методів екземпляра у статичних контекстах
Зверни увагу, що в статичних методах (static) ключове слово this не може бути використане, оскільки воно не відноситься до конкретного екземпляра. У таких випадках, можливо, ти захочеш використати інший метод або перепрошити логіку.

Цей виклик правильно виводить колір для об'єкта meinAuto.
Узагальнення - Спадкування в Java: Посібник для початківців
Спадкування є важливою концепцією в програмуванні на Java, яка допомагає тобі модульно організувати код і повторно використовувати його. У цьому навчальному посібнику ти дізнався про основи модифікаторів доступу, конструкторів та викликів методів у контексті спадкування.
Часті запитання
Як я можу отримати доступ до private змінних у підкласі?До private змінних у підкласі неможливо отримати доступ безпосередньо. Використовуйте методи-геттери та методи-сеттеры.
Яка різниця між protected і private?protected дозволяє доступ у підкласі та в одному пакеті, тоді як private доступний лише в межах власного класу.
Чи потрібно мені визначати конструктори в підкласі?Так, якщо ти змінив конструктор батьківського класу, тобі потрібно також відповідно визначити конструктори в підкласі.
Чи можу я вільно перекривати методи батьківських класів у підкласах?Так, ти можеш перекривати методи, які не помічені final або static, у підкласі, щоб реалізувати специфічну поведінку.