Наследство в Java (с пример)
⚡ Умно обобщение
Наследство в Java е механизъм, при който един клас придобива полетата и методите на друг клас чрез ключовата дума extends. Той насърчава повторната употреба на кода и моделира Is-A връзка между суперклас и неговите подкласове.

Какво е наследство?
наследяване е механизъм, при който един клас придобива собствеността на друг клас. Например, едно дете наследява чертите на родителите си. С наследяването можем да използваме отново полетата и методите на съществуващия клас. Следователно наследяването улеснява повторното използване и е важна концепция за ООП.
В какво е наследството Java?
Java наследяване е механизъм, при който един клас придобива собствеността на друг клас. в Java, когато между два класа съществува връзка „Е-А“, ние използваме Наследяване. Класът родител се нарича супер клас, а наследеният клас се нарича подклас. Ключовата дума extends се използва от подкласа, за да наследи характеристиките на супер класа. Наследяването е важно, тъй като води до повторно използване на кода.
Java Синтаксис на наследяване:
class subClass extends superClass { //methods and fields }
Видове наследство в Java
Ето различните видове наследство в Java:
- Единично наследяване
- Множествено наследяване
- Наследяване на много нива
- Йерархично наследяване
- Хибридно наследяване
1. Единично наследяване:
При единично наследяване един клас разширява друг клас (само един клас).

В горната диаграма клас B разширява само клас A. Клас A е супер клас, а клас B е подклас.
2. Множествено наследяване:
Множественото наследяване е едно от наследствата в Java типове, където един клас разширява повече от един клас. Java не поддържа множествено наследяване.
Съгласно горната диаграма, клас C разширява и двата класа A и клас B.
3. Многостепенно наследяване:
При многостепенното наследяване един клас може да наследява от производен клас. Следователно, производният клас става базов клас за новия клас.
Както е показано на диаграмата, клас C е подклас на B, а B е подклас на клас A.
4. Йерархично наследяване:
При йерархичното наследяване един клас се наследява от много подкласове.
Съгласно горния пример, клас B, C и D наследяват един и същ клас A.
5. Хибридно наследяване:
Хибридното наследяване е един от видовете наследство в Java което е комбинация от единично и множествено наследяване.
Съгласно горния пример, всички публични и защитени членове на клас A се наследяват в клас D, първо чрез клас B и второ чрез клас C.
Забележка: Java не поддържа хибридно/множествено наследяване
Наследство в Java Пример
Ето един пример за наследство в Java:
class Doctor { void Doctor_Details() { System.out.println("Doctor Details..."); } } class Surgeon extends Doctor { void Surgeon_Details() { System.out.println("Surgen Detail..."); } } public class Hospital { public static void main(String args[]) { Surgeon s = new Surgeon(); s.Doctor_Details(); s.Surgeon_Details(); } }
Супер ключова дума
Ключовата дума super е подобна на ключовата дума „тази“. Ключовата дума super може да се използва за достъп до всеки член от данни или методи на родителския клас. Ключовата дума Super може да се използва при променлив, ниво на метод и конструктор.
Синтаксис:
super.<method-name>();
Също така проверете: - тази ключова дума в Java: Какво е и как да се използва с Пример
Научете наследяването в OOP с пример
Помислете за същото банково приложение от предишен пример.
Трябва да отворим два различни типа акаунти, един за спестяване и друг за проверка (известен също като текущ).
Нека сравним и проучим как можем да подходим към кодирането от a перспектива за структурирано и обектно-ориентирано програмиране.
Структурен подход: В структурното програмиране ще създадем две функции –
- Един за теглене
- А другият за депозитни действия.
Тъй като работата на тези функции остава същата във всички акаунти.
Подходът на OOP: Докато използвате ООП програмен подход. Щяхме да създадем два класа.
- Всеки има изпълнение на функциите за депозит и теглене.
- Това ще доведе до излишна допълнителна работа.
Заявка за промяна в софтуера
Сега има промяна в спецификацията на изискванията за нещо, което е толкова често срещано в софтуерната индустрия. Трябва да добавите функционална привилегирована банкова сметка с възможност за овърдрафт. За предистория овърдрафтът е възможност, при която можете да изтеглите сума, по-голяма от наличното салдо по сметката ви.
Структурен подход: Използвайки функционален подход, трябва да променя моята функция за изтегляне, която вече е тествана и базирана. И добавянето на метод като по-долу ще се погрижи за новите изисквания.
Подходът на OOP: Използвайки подхода на OOP, просто трябва да напишете нов клас с уникална реализация на функцията за изтегляне. Никога не сме докосвали тестваното парче код.
Още една заявка за промяна
Ами ако изискването се промени допълнително? Искате да добавите сметка за кредитна карта със собствено уникално изискване за депозити.
Структурен подход: Използвайки структурния подход, трябва да промените отново тествания код на депозита.
Подходът на OOP: Но използвайки обектно-ориентиран подход, просто ще създадете нов клас с неговата уникална имплементация на метода за депозит (маркиран в червено на изображението по-долу). Така че, въпреки че структурното програмиране изглежда като лесен подход първоначално, ООП печели в дългосрочен план.
Предимства на наследяването в ООП
Но може да се твърди, че във всички класове имате повтарящи се части от код.
За да преодолеете това, създавате родителски клас, кажете „сметка“ и прилагате същата функция за депозит и теглене. И направете дъщерните класове наследен клас „акаунт“. Така че те ще имат достъп до функции за теглене и депозиране в клас акаунт. Не се изисква функциите да се изпълняват индивидуално. Това е Наследяване в java. .











