logo

Dedičnosť v Jave

  1. Dedičnosť
  2. Typy dedičstva
  3. Prečo nie je v Jave možné viacnásobné dedenie v prípade triedy?

Dedičnosť v Jave je mechanizmus, v ktorom jeden objekt získava všetky vlastnosti a správanie rodičovského objektu. Je dôležitou súčasťou OOPs (Objektovo orientovaný programovací systém).

Myšlienka dedenia v Jave je, že môžete vytvárať nové triedy ktoré sú postavené na existujúcich triedach. Keď dedíte z existujúcej triedy, môžete znova použiť metódy a polia nadradenej triedy. Okrem toho môžete do svojej aktuálnej triedy pridať aj nové metódy a polia.

Dedičnosť predstavuje IS-A vzťah ktorý je známy aj ako a rodič-dieťa vzťah.

Prečo používať dedičnosť v jave

Termíny používané v dedičstve

    Trieda:Trieda je skupina objektov, ktoré majú spoločné vlastnosti. Je to šablóna alebo plán, z ktorého sa vytvárajú objekty.Podtrieda/trieda detí:Podtrieda je trieda, ktorá zdedí druhú triedu. Nazýva sa tiež odvodená trieda, rozšírená trieda alebo detská trieda.Super trieda/rodičovská trieda:Nadtrieda je trieda, z ktorej podtrieda zdedí vlastnosti. Nazýva sa aj základná trieda alebo rodičovská trieda.Opätovná použiteľnosť:Ako naznačuje názov, opätovná použiteľnosť je mechanizmus, ktorý vám uľahčuje opätovné použitie polí a metód existujúcej triedy pri vytváraní novej triedy. Môžete použiť rovnaké polia a metódy, ktoré už boli definované v predchádzajúcej triede.

Syntax dedičnosti Java

 class Subclass-name extends Superclass-name { //methods and fields } 

The rozširuje kľúčové slovo označuje, že vytvárate novú triedu, ktorá vychádza z existujúcej triedy. Význam „rozširuje“ je zvýšiť funkčnosť.

filmy z Indie

V terminológii Java sa trieda, ktorá je zdedená, nazýva rodičovská alebo nadtrieda a nová trieda sa nazýva dieťa alebo podtrieda.


Príklad dedičnosti Java

Dedičnosť v Jave

Ako je znázornené na obrázku vyššie, Programátor je podtrieda a Zamestnanec je nadtrieda. Vzťah medzi týmito dvoma triedami je Programátor je zamestnanec . Znamená to, že programátor je typ zamestnanca.

double v jave
 class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; public static void main(String args[]){ Programmer p=new Programmer(); System.out.println('Programmer salary is:'+p.salary); System.out.println('Bonus of Programmer is:'+p.bonus); } } 
Vyskúšajte to
 Programmer salary is:40000.0 Bonus of programmer is:10000 

Vo vyššie uvedenom príklade môže objekt Programátor pristupovať k poľu vlastnej triedy, ako aj k triede Zamestnanec, t. j. znovupoužiteľnosť kódu.


Typy dedičnosti v jave

Na základe triedy môžu v jave existovať tri typy dedenia: jednoduché, viacúrovňové a hierarchické.

V programovaní Java je viacnásobné a hybridné dedičstvo podporované iba prostredníctvom rozhrania. O rozhraniach sa dozvieme neskôr.

Typy dedičnosti v Jave

Poznámka: Viacnásobné dedenie nie je podporované v jazyku Java prostredníctvom triedy.

Keď jedna trieda zdedí viacero tried, nazýva sa to viacnásobná dedičnosť. Napríklad:

Viacnásobné dedičstvo v Jave

Príklad jediného dedičstva

Keď trieda zdedí inú triedu, je známa ako a jediné dedičstvo . V príklade uvedenom nižšie trieda Pes zdedí triedu Zviera, takže existuje jediné dedičstvo.

Súbor: TestInheritance.java

porovnateľný reťazec
 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class TestInheritance{ public static void main(String args[]){ Dog d=new Dog(); d.bark(); d.eat(); }} 

Výkon:

 barking... eating... 

Príklad viacúrovňového dedičstva

Keď existuje reťaz dedičnosti, je známa ako viacúrovňové dedičstvo . Ako môžete vidieť v príklade uvedenom nižšie, trieda BabyDog zdedí triedu Pes, ktorá opäť zdedí triedu Animal, takže existuje viacúrovňové dedičstvo.

Súbor: TestInheritance2.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class BabyDog extends Dog{ void weep(){System.out.println('weeping...');} } class TestInheritance2{ public static void main(String args[]){ BabyDog d=new BabyDog(); d.weep(); d.bark(); d.eat(); }} 

Výkon:

 weeping... barking... eating... 

Príklad hierarchického dedičstva

Keď dve alebo viac tried zdedí jednu triedu, je známa ako hierarchické dedičstvo . V príklade uvedenom nižšie triedy Pes a Mačka dedia triedu Zvieratá, takže existuje hierarchické dedičstvo.

tostring java metóda

Súbor: TestInheritance3.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class Cat extends Animal{ void meow(){System.out.println('meowing...');} } class TestInheritance3{ public static void main(String args[]){ Cat c=new Cat(); c.meow(); c.eat(); //c.bark();//C.T.Error }} 

Výkon:

 meowing... eating... 

Otázka) Prečo nie je v jave podporované viacnásobné dedičstvo?

Kvôli zníženiu zložitosti a zjednodušeniu jazyka nie je v jave podporované viacnásobné dedenie.

Zvážte scenár, kde A, B a C sú tri triedy. Trieda C dedí triedy A a B. Ak triedy A a B majú rovnakú metódu a voláte ju z objektu triedy podriadenej triedy, volanie metódy triedy A alebo B bude nejednoznačné.

Keďže chyby v čase kompilácie sú lepšie ako chyby pri behu, Java vykreslí chybu v čase kompilácie, ak zdedíte 2 triedy. Či už máte rovnakú alebo inú metódu, dôjde k chybe v čase kompilácie.

 class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were public static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } } 
Vyskúšajte to
 Compile Time Error