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
- Pre Prepísanie metódy (takže runtime polymorfizmus môže byť dosiahnuté).
- Pre znovupoužiteľnosť kódu.
Termíny používané v dedičstve
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
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.
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:
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