Java 8 успадкування
Зміст
Java клас може успадковуватися від іншого класу, отримуючи його методи і поля, який у свою чергу може успадковуватися від ще одного класу і т. д. У Java немає множинного успадкування класів. Один клас може успадковуватися безпосередньо від одного іншого класу.
Клас, який успадковується від іншого класу, називаєтьсяпідкласом (subclass),дочірнім класом (child class),нащадком аборозширеним класом ( extended class).
Клас, від якого успадковується дочірній клас, називаєтьсябатьківським класом (parent class),предком,суперкласом (superclass) абобазовим класом ( base class).
У самій вершині ієрархії спадкування знаходиться клас Object, від якого успадковуються всі класи, для яких не вказано суперклас. Таким чином всі класи (крім самого Object) безпосередньо або через якусь кількість рівнів успадкування успадковуються від класу Object.
Ідея успадкування класів полягає в тому, що коли ви хочете створити новий клас, наприклад Goblin, і вже існує якийсь клас, який вже реалізує частину функціональності, необхідної нашому класу, наприклад Monster, то ви можете вказати цей клас як батьківський клас, успадкувавши таким чином усі його члени (поля, вкладені класи та методи екземплярів). Конструктори не успадковуються і є членами класів, але можна викликати конструктор базового класу з конструктора дочірнього класу.

Дочірній клас успадковує все public і protected члени свого батька незалежно від пакета, в якому розташований батьківський клас. Якщо дочірній та батьківський клас знаходяться в одному пакеті, то дочірній клас успадковує також package-private члени свого батька.
- Успадковані поля можна використовувати безпосередньо, як й інші поля.
- Можна оголосити в дочірньому класі поле з таким самим ім'ям, як і поле в батьківському класі, тоді це полеприховує (hide) поле батьківського класу (НЕ рекомендується так робити).
- У дочірньому класі можна оголошувати поля, яких немає у батьківському класі.
- Спадкові методи можна використовувати безпосередньо.
- Можна оголосити метод екземплярів у дочірньому класі з такою самою сигнатурою, що й метод екземплярів у батьківському класі, тоді цей метод перевизначить (override) метод суперкласу.
- Можна оголосити в дочірньому класі статичний метод з такою самою сигнатурою, що й статичний метод у батьківському класі, тоді цей метод приховує метод батьківського класу.
- У дочірньому класі можна оголошувати нові методи, яких немає у батьківському класі.
- У дочірньому класі можна оголосити конструктор, який явно (за допомогою ключового слова super) або неявно викликатиме конструктор базового класу.
Дочірній клас не успадковує private члени батьківського класу, проте якщо в батьківському класі є protected , public або package-private (для випадку знаходження дочірнього та батьківського класу в одному пакеті) методи доступу до private полів, то вони можуть використовуватися дочірнім класом.
Приведення типів
Подивіться створення екземпляра об'єкта Goblin :