Öröklés Java nyelven egy olyan mechanizmus, amelyben egy objektum elsajátítja egy szülőobjektum összes tulajdonságát és viselkedését. Ez egy fontos része OOP (Objektumorientált programozási rendszer).
A Java öröklődésének alapja az, hogy újat hozhat létre osztályok amelyek a meglévő osztályokra épülnek. Ha egy meglévő osztályból örököl, újra felhasználhatja a szülőosztály metódusait és mezőit. Ezenkívül új metódusokat és mezőket is hozzáadhat az aktuális osztályhoz.
Az öröklődés azt jelenti IS-Egy kapcsolat amely más néven a szülő-gyerek kapcsolat.
Miért használja az öröklődést a Java-ban?
- Mert Módszer felülbírálása (így futásidejű polimorfizmus elérhető).
- A kód újrafelhasználhatósága érdekében.
Az Öröklésben használt kifejezések
A Java Inheritance szintaxisa
class Subclass-name extends Superclass-name { //methods and fields }
A kiterjeszti a kulcsszót azt jelzi, hogy egy új osztályt készít, amely egy meglévő osztályból származik. A „kiterjed” jelentése a funkcionalitás növelése.
numpy dot termék
A Java terminológiájában az öröklött osztályt szülőnek vagy szuperosztálynak, az új osztályt pedig gyermeknek vagy alosztálynak nevezik.
Java öröklődési példa
Amint a fenti ábrán látható, a Programozó az alosztály, az Alkalmazott pedig a felső osztály. A két osztály közötti kapcsolat az Programozó IS-A alkalmazott . Ez azt jelenti, hogy a programozó egyfajta alkalmazott.
farkas kontra ró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); } }Tesztelje most
Programmer salary is:40000.0 Bonus of programmer is:10000
A fenti példában a programozó objektum hozzáférhet a saját osztály mezőjéhez, valamint az Employee osztályhoz, azaz a kód újrafelhasználhatóságához.
Az öröklődés típusai a java-ban
Az osztályok alapján háromféle öröklődés létezhet a Java-ban: egy-, többszintű és hierarchikus.
A java programozásban a többszörös és hibrid öröklés csak interfészen keresztül támogatott. A felületekről később fogunk tanulni.
Megjegyzés: A Java osztályon keresztüli többszörös öröklése nem támogatott.
Ha egy osztály több osztályt örököl, azt többszörös öröklődésnek nevezik. Például:
Egyetlen öröklődési példa
Ha egy osztály egy másik osztályt örököl, azt a néven ismerjük egyszeri öröklés . Az alábbi példában a Dog osztály örökli az Animal osztályt, tehát ott van az egyetlen öröklődés.
Fájl: 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(); }}
Kimenet:
rohit shetty színész
barking... eating...
Példa többszintű öröklődésre
Ha van egy öröklődési lánc, akkor az úgynevezett többszintű öröklődés . Amint az alábbi példában látható, a BabyDog osztály örökli a Dog osztályt, amely ismét örökli az Animal osztályt, tehát többszintű öröklődésről van szó.
Fájl: 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(); }}
Kimenet:
eltolási magasság
weeping... barking... eating...
Példa a hierarchikus öröklődésre
Ha két vagy több osztály örököl egyetlen osztályt, azt úgy nevezzük hierarchikus öröklődés . Az alábbi példában a kutya és macska osztályok öröklik az Animal osztályt, tehát van hierarchikus öröklődés.
Fájl: 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 }}
Kimenet:
meowing... eating...
K) Miért nem támogatja a többszörös öröklődést a java?
A bonyolultság csökkentése és a nyelv egyszerűsítése érdekében a többszörös öröklődés nem támogatott a Java-ban.
Tekintsünk egy forgatókönyvet, ahol A, B és C három osztály. A C osztály örökli az A és B osztályt. Ha az A és B osztálynak ugyanaz a metódusa, és a gyermek osztály objektumból hívja meg, akkor az A vagy B osztály metódusának hívása nem egyértelmű.
Mivel a fordítási hibák jobbak, mint a futásidejű hibák, a Java fordítási hibát jelenít meg, ha 2 osztályt örököl. Tehát akár ugyanaz a módszer, akár más, fordítási időhiba lesz.
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? } }Tesztelje most
Compile Time Error