logo

Dědičnost v Javě

  1. Dědictví
  2. Typy dědičnosti
  3. Proč vícenásobná dědičnost není v Javě v případě třídy možná?

Dědičnost v Javě je mechanismus, ve kterém jeden objekt získává všechny vlastnosti a chování nadřazeného objektu. Je důležitou součástí OOPs (Objektově orientovaný programovací systém).

Myšlenka dědičnosti v Javě je, že můžete vytvářet nové třídy které jsou postaveny na stávajících třídách. Když dědíte z existující třídy, můžete znovu použít metody a pole nadřazené třídy. Navíc můžete přidat nové metody a pole do vaší aktuální třídy.

Dědičnost představuje IS-A vztah který je také známý jako a rodič-dítě vztah.

Proč používat dědičnost v Javě

Termíny používané v dědictví

    Třída:Třída je skupina objektů, které mají společné vlastnosti. Je to šablona nebo plán, ze kterého se vytvářejí objekty.Podtřída/třída dětí:Podtřída je třída, která dědí druhou třídu. Nazývá se také odvozená třída, rozšířená třída nebo podřízená třída.Super třída/rodičovská třída:Superclass je třída, ze které podtřída dědí vlastnosti. Nazývá se také základní třída nebo rodičovská třída.Opětovná použitelnost:Jak název napovídá, opětovná použitelnost je mechanismus, který vám usnadňuje opětovné použití polí a metod existující třídy při vytváření nové třídy. Můžete použít stejná pole a metody již definované v předchozí třídě.

Syntaxe Java Inheritance

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

The rozšiřuje klíčové slovo označuje, že vytváříte novou třídu, která je odvozena od existující třídy. Smyslem „rozšíří“ je zvýšit funkčnost.

náhodný v c

V terminologii Javy se zděděná třída nazývá rodič nebo nadtřída a nová třída se nazývá dítě nebo podtřída.


Příklad dědičnosti Java

Dědičnost v Javě

Jak je znázorněno na obrázku výše, Programmer je podtřída a Employee je nadtřída. Vztah mezi těmito dvěma třídami je Programátor IS-A zaměstnanec . To znamená, že programátor je typ zaměstnance.

vlk versus liška
 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); } } 
Otestujte to hned
 Programmer salary is:40000.0 Bonus of programmer is:10000 

Ve výše uvedeném příkladu může objekt Programmer přistupovat k poli vlastní třídy i třídy Employee, tj. znovupoužitelnosti kódu.


Typy dědičnosti v Javě

Na základě třídy mohou v Javě existovat tři typy dědičnosti: jednoduché, víceúrovňové a hierarchické.

V programování Java je vícenásobná a hybridní dědičnost podporována pouze prostřednictvím rozhraní. O rozhraních se dozvíme později.

Typy dědičnosti v Javě

Poznámka: Vícenásobná dědičnost není v Javě podporována prostřednictvím třídy.

Když jedna třída zdědí více tříd, nazývá se to vícenásobná dědičnost. Například:

Vícenásobná dědičnost v Javě

Příklad jediné dědičnosti

Když třída zdědí jinou třídu, nazývá se a jediné dědictví . V níže uvedeném příkladu třída Dog dědí třídu Animal, takže existuje jediná dědičnost.

java tutoriály

Soubor: TestInheritance.java

 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ýstup:

 barking... eating... 

Příklad víceúrovňové dědičnosti

Když existuje řetězec dědictví, je známý jako víceúrovňová dědičnost . Jak můžete vidět v příkladu níže, třída BabyDog dědí třídu Dog, která opět dědí třídu Animal, takže existuje víceúrovňová dědičnost.

Soubor: 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ýstup:

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

Příklad hierarchického dědictví

Když dvě nebo více tříd zdědí jednu třídu, je známá jako hierarchická dědičnost . V níže uvedeném příkladu třídy Pes a Kočka dědí třídu Zvíře, takže existuje hierarchická dědičnost.

Soubor: TestInheritance3.java

pvr plná forma
 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ýstup:

 meowing... eating... 

Otázka: Proč vícenásobná dědičnost není podporována v jazyce Java?

Kvůli snížení složitosti a zjednodušení jazyka není v jazyce Java podporována vícenásobná dědičnost.

Zvažte scénář, kde A, B a C jsou tři třídy. Třída C dědí třídy A a B. Pokud třídy A a B mají stejnou metodu a voláte ji z podřízeného objektu třídy, bude volání metody třídy A nebo B nejednoznačné.

Protože chyby v době kompilace jsou lepší než chyby za běhu, Java vykreslí chybu v době kompilace, pokud zdědíte 2 třídy. Takže ať už máte stejnou nebo jinou metodu, dojde k chybě kompilace.

 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? } } 
Otestujte to hned
 Compile Time Error