Какво е наследяване?
Наследяването е механизъм, при който един клас придобива свойството на друг клас. Например, едно дете наследява чертите на своите родители. С наследяването можем да използваме повторно полетата и методите на съществуващия клас. Следователно наследяването улеснява повторната употреба и е важна концепция за ООП.
В този урок ще научите -
- Видове наследяване
- Наследяване в Java
- Пример за наследяване на Java
- Супер ключова дума
- Научете наследяването в ООП с пример
Видове наследяване
Има различни видове наследяване в Java:
Единично наследяване:
При единично наследяване един клас разширява друг клас (само един клас).

В горната диаграма клас B се простира само на клас A. Клас A е супер клас, а клас B е подклас.
Множествено наследяване:
При множествено наследяване един клас, разширяващ повече от един клас. Java не поддържа множествено наследяване.

Съгласно диаграмата по-горе, клас C разширява клас A и клас B.
Наследяване на много нива:
При многостепенното наследяване един клас може да наследява от производен клас. Следователно производният клас се превръща в основен клас за новия клас.

Както е показано на диаграмата Клас C е подклас от B и B е от подклас клас A.
Йерархично наследяване:
При йерархичното наследяване един клас се наследява от много подкласове.

Както е описано по-горе, клас B, C и D наследяват същия клас A.
Хибридно наследяване:
Хибридното наследяване е комбинация от единично и множествено наследяване.

Както е посочено по-горе, всички публични и защитени членове от клас A се наследяват в клас D, първо чрез клас B и второ чрез клас C.
Забележка: Java не поддържа хибридно / множествено наследяване
Наследяване в Java
JAVA INHERITANCE е механизъм, при който един клас придобива свойството на друг клас. В Java, когато съществува връзка „Is-A“ между два класа, ние използваме наследяване. Родителският клас се нарича супер клас, а наследеният клас се нарича подклас. Ключовата дума
extends
се използва от подкласа за наследяване на характеристиките на супер клас.
Наследяването е важно, тъй като води до повторната употреба на кода.
Синтаксис на наследяване на Java:
class subClass extends superClass{//methods and fields}
Пример за наследяване на 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 е подобна на ключовата дума „this“.
Ключовата дума super може да се използва за достъп до всеки член на данни или методи на родителския клас.
Супер ключовата дума може да се използва на ниво променлива, метод и конструктор.
Синтаксис:
super.();
Научете наследяването в ООП с пример
Да разгледаме същото банково приложение от предишния пример.
Трябва да отворим два различни типа акаунти, един за спестяване и друг за проверка (известен също като текущ).
Нека сравним и проучим как можем да подходим към кодирането от структурирана и обектно-ориентирана програмна перспектива. Структурен подход : В структурираното програмиране ще създадем две функции -
- Един да се оттегли
- А другата за депозитни действия.
Тъй като работата на тези функции остава една и съща в сметките.
Подходът на ООП : Докато се използва подходът за програмиране на ООП. Бихме създали два класа.
- Всеки има изпълнение на функциите за депозиране и теглене.
- Това ще доведе до излишна допълнителна работа.
Заявка за промяна в софтуера
Сега има промяна в спецификацията на изискванията за нещо, което е толкова често срещано в софтуерната индустрия. Трябва да добавите привилегирована функционалност банкова сметка с овърдрафт. Като заден план овърдрафтът е средство, при което можете да изтеглите сума, повече от наличното салдо във вашата сметка.
Структурен подход: Използвайки функционален подход, трябва да модифицирам функцията си за изтегляне, която вече е тествана и базисна. И добавете метод като по-долу ще се погрижи за нови изисквания.
Подходът на OOP: Използвайки подхода на OOP, просто трябва да напишете нов клас с уникална реализация на функцията за изтегляне. Никога не сме пипали тествания код.
Още едно искане за промяна
Какво ще стане, ако изискването се промени допълнително? Бихте искали да добавите сметка на кредитна карта със свое уникално изискване за депозити .
Структурен подход: Използвайки структурен подход, трябва отново да смените тествания депозитен код.
Подходът на ООП : Но използвайки обектно-ориентиран подход, вие просто ще създадете нов клас с уникалната му реализация на метода за депозиране (маркиран в червено на изображението по-долу).
Така че въпреки че първоначално структурното програмиране изглежда като лесен подход, ООП печели в дългосрочен план.
Предимство на наследяването в ООП
Но може да се твърди, че във всички класове имате повтарящи се части от код.
За да преодолеете това, създавате родителски клас, казвате „акаунт“ и прилагате същата функция за депозиране и теглене. И направете детски класове наследен клас "акаунт". За да имат достъп до функции за теглене и депозиране в класа на сметките.
Не се изисква функциите да се изпълняват индивидуално. Това е наследяване в java. .