Co je dědičnost?
Dědičnost je mechanismus, ve kterém jedna třída získává majetek jiné třídy. Například dítě zdědí rysy svých rodičů. S dědičností můžeme znovu použít pole a metody existující třídy. Dědičnost tedy usnadňuje opětovnou použitelnost a je důležitým konceptem OOP.
V tomto výukovém programu se naučíte
- Druhy dědičnosti
- Dědičnost v Javě
- Příklad dědičnosti Java
- Super klíčové slovo
- Naučte se dědičnost v OOP s příkladem
Druhy dědičnosti
V Javě existují různé typy dědičnosti:
Single dědičnost:
V Single Inheritance jedna třída rozšiřuje další třídu (pouze jedna třída).
Ve výše uvedeném diagramu rozšiřuje třída B pouze třídu A. Třída A je super třída a třída B je podtřída.
Vícenásobné dědictví:
V Multiple Inheritance, jedna třída rozšiřující více než jednu třídu. Java nepodporuje vícenásobné dědictví.
Podle výše uvedeného diagramu rozšiřuje třída C obě třídy A a třídu B.
Víceúrovňová dědičnost:
Ve víceúrovňové dědičnosti může jedna třída dědit z odvozené třídy. Odvozená třída se proto stává základní třídou pro novou třídu.
Jak je znázorněno v diagramu, třída C je podtřídou B a B je podtřídou třídy A.
Hierarchická dědičnost:
V hierarchické dědičnosti je jedna třída zděděna mnoha podtřídami.
Podle výše uvedeného příkladu třídy B, C a D dědí stejnou třídu A.
Hybridní dědičnost:
Hybridní dědičnost je kombinací jednoduché a vícenásobné dědičnosti.
Jak je uvedeno výše, všichni veřejní a chránění členové třídy A se dědí do třídy D, nejprve přes třídu B a za druhé přes třídu C.
Poznámka: Java nepodporuje hybridní / vícenásobnou dědičnost
Dědičnost v Javě
JAVA INHERITANCE je mechanismus, ve kterém jedna třída získává majetek jiné třídy. Pokud v Javě existuje vztah „Is-A“ mezi dvěma třídami, použijeme dědičnost. Nadřazená třída se nazývá super třída a zděděná třída se nazývá podtřída. Klíčové slovo
extends
je používán podtřídou k zdědění funkcí super třídy.
Dědičnost je důležitá, protože vede k opětovné použitelnosti kódu.
Syntaxe Java Inheritance:
class subClass extends superClass{//methods and fields}
Příklad dědičnosti 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 klíčové slovo
Super klíčové slovo je podobné „tomuto“ klíčovému slovu.
Klíčové slovo super lze použít pro přístup k jakémukoli datovému členu nebo metodám nadřazené třídy.
Super klíčové slovo lze použít na úrovni proměnné, metody a konstruktoru.
Syntax:
super.();
Naučte se dědičnost v OOP s příkladem
Zvažte stejnou bankovní aplikaci z předchozího příkladu.
Měli bychom otevřít dva různé typy účtů, jeden pro ukládání a druhý pro kontrolu (také známý jako aktuální).
Pojďme porovnat a studovat, jak můžeme přistupovat ke kódování z pohledu strukturovaného a objektově orientovaného programování. Strukturální přístup : Ve strukturovaném programování vytvoříme dvě funkce -
- Jeden na výběr
- A druhý pro vkladovou akci.
Protože fungování těchto funkcí zůstává ve všech účtech stejné.
Přístup OOP : Při použití programovacího přístupu OOP . Vytvořili bychom dvě třídy.
- Každá má implementaci funkcí vkladu a výběru.
- To nadbytečné práce navíc.
Žádost o změnu v softwaru
Nyní došlo ke změně ve specifikaci požadavků pro něco, co je v softwarovém průmyslu tak běžné. Měli byste přidat funkční privilegovaný bankovní účet s kontokorentním úvěrem. Jako pozadí je kontokorent možnost, kde můžete vybrat částku vyšší, než je k dispozici zůstatek na vašem účtu.
Strukturální přístup: Pomocí funkčního přístupu musím upravit svou funkci stažení, která je již testována a základem. A přidat způsob, jak je uvedeno níže, se postará o nové požadavky.
Přístup OOP: Použitím přístupu OOP stačí napsat novou třídu s jedinečnou implementací funkce výběru. Nikdy jsme se nedotkli testované části kódu.
Další žádost o změnu
Co když se požadavek dále změní? Rád přidáte účet na kreditní kartě s vlastním jedinečným požadavkem na vklady .
Strukturální přístup: Pomocí strukturálního přístupu musíte znovu změnit testovaný kus kódu vkladu.
Přístup OOP : Ale pomocí objektově orientovaného přístupu vytvoříte novou třídu s jedinečnou implementací metody vkladu (na obrázku níže zvýrazněna červeně).
Takže i když se strukturální programování zdá zpočátku jako snadný přístup, OOP dlouhodobě vyhrává.
Výhoda dědičnosti v OOP
Ale někdo může namítnout, že ve všech třídách máte opakované části kódu.
Abyste to překonali, vytvoříte nadřazenou třídu, řeknete „účet“ a implementujete stejnou funkci vkladu a výběru. A udělejte podřízené třídy zděděnou třídou „účtu“. Aby měli přístup k funkcím výběru a vkladu ve třídě účtu.
Funkce nemusí být implementovány jednotlivě. Toto je dědičnost v Javě. .