Dědičnost v OOP Java s příkladem

Obsah:

Anonim

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).

Single dědičnost

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í.

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.

Víceúrovňová dědičnost

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.

Hierarchická dědičnost

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.

Hybridní dědičnost

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 -

  1. Jeden na výběr
  2. 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ě. .