Dědictví v Java (s příkladem)
Co je dědičnost?
Dědictví je mechanismus, ve kterém jedna třída získává vlastnost jiné třídy. Dítě například zdědí vlastnosti svých rodičů. Díky dědičnosti můžeme znovu použít pole a metody existující třídy. Dědičnost tedy usnadňuje opětovné použití a je důležitým konceptem OOP.
V čem je dědičnost Java?
Java Dědictví je mechanismus, ve kterém jedna třída získává vlastnost jiné třídy. V Java, když mezi dvěma třídami existuje vztah „Je-A“, použijeme dědičnost. Nadřazená třída se nazývá nadtřída a zděděná třída se nazývá podtřída. Klíčové slovo extends
je používána podtřídou ke zdědění funkcí supertřídy. Dědičnost je důležitá, protože vede k opětovné použitelnosti kódu.
Java Syntaxe dědičnosti:
class subClass extends superClass { //methods and fields }
Typy dědičnosti v Java
Zde jsou různé typy dědičnosti Java:
- Single dědičnost
- Vícenásobné dědictví
- Víceúrovňová dědičnost
- Hierarchická dědičnost
- Hybridní dědičnost
1. Jediné dědictví:
V Single Inheritance jedna třída rozšiřuje další třídu (pouze jedna třída).
Ve výše uvedeném diagramu třída B rozšiřuje pouze třídu A. Třída A je supertřída a třída B je podtřída.
2. Vícenásobná dědičnost:
Vícenásobná dědičnost je jedním z dědičnosti v Java typy, kde jedna třída rozšiřuje více než jednu třídu. Java nepodporuje vícenásobnou dědičnost.
Jak je uvedeno výše, třída C rozšiřuje třídu A i třídu B.
3. 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 tedy stane základní třídou pro novou třídu.
Jak je znázorněno na diagramu, třída C je podtřídou B a B je podtřídou třídy A.
4. Hierarchická dědičnost:
V hierarchické dědičnosti je jedna třída zděděna mnoha podtřídami.
Jak je uvedeno výše, třídy B, C a D zdědí stejnou třídu A.
5. Hybridní dědičnost:
Hybridní dědičnost je jedním z typů dědičnosti Java což je kombinace 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 jsou zděděni do třídy D, nejprve prostřednictvím třídy B a podruhé prostřednictvím třídy C.
Poznámka: Java nepodporuje hybridní/vícenásobnou dědičnost
Dědictví v Java Příklad
Zde je příklad dědičnosti v 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
Klíčové slovo super je podobné klíčovému slovu „toto“. Klíčové slovo super lze použít pro přístup k libovolnému datovému členu nebo metodám nadřazené třídy. Super klíčové slovo lze použít na proměnlivý, metoda a úroveň konstruktoru.
Syntaxe:
super.<method-name>();
Zkontrolujte také: - toto klíčové slovo v Java: Co je a jak používat s příkladem
Naučte se dědičnost v OOP s příkladem
Zvažte stejnou bankovní aplikaci z předchozí příklad.
Máme otevřít dva různé typy účtů, jeden pro spoření a druhý pro kontrolu (také známý jako běžný).
Pojďme porovnat a studovat, jak můžeme přistupovat ke kódování z a perspektiva strukturovaného a objektově orientovaného programování.
Strukturální přístup: Ve strukturovaném programování vytvoříme dvě funkce –
- Jeden ke stažení
- A druhý na akci vkladu.
Protože fungování těchto funkcí zůstává na všech účtech stejné.
OOP přístup: Při používání OOP programovací přístup. Vytvořili bychom dvě třídy.
- Každý z nich má implementaci funkce vkladu a výběru.
- To bude zbytečná práce navíc.
Požadavek na změnu v softwaru
Nyní došlo ke změně specifikace požadavků na něco, co je v softwarovém průmyslu tak běžné. Předpokládá se, že přidáte funkcionalitu zvýhodněného bankovního účtu s kontokorentním úvěrem. Na pozadí je kontokorent nástroj, kde můžete vybrat částku vyšší, než je dostupný 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ž otestována a základní. A přidat metodu jako níže se postará o nové požadavky.
Přístup OOP: Pomocí přístupu OOP stačí napsat novou třídu s jedinečnou implementací funkce stažení. Testovaného kusu kódu jsme se nikdy nedotkli.
Další žádost o změnu
Co když se požadavek dále změní? Chcete přidat účet kreditní karty 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ý kód vkladu.
OOP přístup: Ale pomocí objektově orientovaného přístupu pouze vytvoříte novou třídu s unikátní implementací metody vkladu (na obrázku níže zvýrazněna červeně). Takže i když se strukturální programování zpočátku zdá jako snadný přístup, OOP vyhrává z dlouhodobého hlediska.
Výhody dědičnosti v OOP
Někdo však může namítnout, že napříč všemi třídami máte opakované části kódu.
Chcete-li to překonat, vytvořte nadřazenou třídu, řekněte „účet“ a implementujte stejnou funkci vkladu a výběru. A udělejte z dětských tříd zděděnou třídu „účtu“. Takže budou mít přístup k funkcím výběru a vkladu ve třídě účtu. Funkce není nutné implementovat jednotlivě. Tohle je Dědičnost v Javě. .