logo

Dziedziczenie w Javie

  1. Dziedzictwo
  2. Rodzaje dziedziczenia
  3. Dlaczego wielokrotne dziedziczenie nie jest możliwe w Javie w przypadku klasy?

Dziedziczenie w Javie to mechanizm, w którym jeden obiekt przejmuje wszystkie właściwości i zachowania obiektu nadrzędnego. Jest to ważna część OOP (System programowania obiektowego).

Ideą dziedziczenia w Javie jest to, że możesz tworzyć nowe zajęcia które są zbudowane na istniejących klasach. Dziedzicząc z istniejącej klasy, możesz ponownie wykorzystać metody i pola klasy nadrzędnej. Co więcej, możesz dodać nowe metody i pola również do swojej bieżącej klasy.

filmy

Dziedziczenie oznacza Relacja IS-A który jest również znany jako rodzic-dziecko relacja.

Po co używać dziedziczenia w Javie

Terminy używane w Dziedziczeniu

    Klasa:Klasa to grupa obiektów mających wspólne właściwości. Jest to szablon lub plan, na podstawie którego tworzone są obiekty.Podklasa/klasa dziecięca:Podklasa to klasa, która dziedziczy inną klasę. Nazywa się ją także klasą pochodną, ​​klasą rozszerzoną lub klasą podrzędną.Superklasa/klasa rodziców:Nadklasa to klasa, z której podklasa dziedziczy funkcje. Nazywa się ją także klasą bazową lub klasą nadrzędną.Możliwość ponownego użycia:Jak sama nazwa wskazuje, reusability to mechanizm, który ułatwia ponowne wykorzystanie pól i metod istniejącej klasy podczas tworzenia nowej klasy. Możesz użyć tych samych pól i metod, które zostały już zdefiniowane w poprzedniej klasie.

Składnia dziedziczenia Java

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

The rozszerza słowo kluczowe wskazuje, że tworzysz nową klasę, która wywodzi się z istniejącej klasy. Znaczenie słowa „rozszerza” polega na zwiększeniu funkcjonalności.

W terminologii języka Java dziedziczona klasa nazywana jest klasą nadrzędną lub nadklasą, a nowa klasa nazywana jest klasą podrzędną lub podklasą.


Przykład dziedziczenia Java

Dziedziczenie w Javie

Jak pokazano na powyższym rysunku, Programista jest podklasą, a Pracownik jest nadklasą. Związek między tymi dwiema klasami jest Programista IS-A Pracownik . Oznacza to, że Programista jest typem Pracownika.

 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); } } 
Przetestuj teraz
 Programmer salary is:40000.0 Bonus of programmer is:10000 

W powyższym przykładzie obiekt Programista może uzyskać dostęp do pola własnej klasy oraz klasy Pracownik, czyli możliwości ponownego wykorzystania kodu.


Rodzaje dziedziczenia w Javie

Ze względu na klasę w Javie można wyróżnić trzy typy dziedziczenia: jedno, wielopoziomowe i hierarchiczne.

W programowaniu w Javie dziedziczenie wielokrotne i hybrydowe jest obsługiwane wyłącznie poprzez interfejs. O interfejsach dowiemy się później.

Rodzaje dziedziczenia w Javie

Uwaga: Dziedziczenie wielokrotne nie jest obsługiwane w Javie poprzez klasę.

Kiedy jedna klasa dziedziczy wiele klas, nazywa się to dziedziczeniem wielokrotnym. Na przykład:

Dziedziczenie wielokrotne w Javie

Przykład pojedynczego dziedziczenia

Kiedy klasa dziedziczy inną klasę, nazywa się to a pojedyncze dziedzictwo . W przykładzie podanym poniżej klasa Dog dziedziczy klasę Animal, zatem dziedziczenie jest pojedyncze.

Plik: 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(); }} 

Wyjście:

 barking... eating... 

Przykład dziedziczenia wielopoziomowego

Kiedy istnieje łańcuch dziedziczenia, jest to tzw dziedziczenie wielopoziomowe . Jak widać na poniższym przykładzie, klasa BabyDog dziedziczy klasę Dog, która ponownie dziedziczy klasę Animal, zatem mamy do czynienia z dziedziczeniem wielopoziomowym.

Plik: 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(); }} 

Wyjście:

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

Przykład dziedziczenia hierarchicznego

Kiedy dwie lub więcej klas dziedziczy jedną klasę, nazywa się to dziedziczenie hierarchiczne . W poniższym przykładzie klasy Dog i Cat dziedziczą klasę Animal, zatem mamy do czynienia z dziedziczeniem hierarchicznym.

Plik: 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 }} 

Wyjście:

 meowing... eating... 

P) Dlaczego dziedziczenie wielokrotne nie jest obsługiwane w Javie?

Aby zmniejszyć złożoność i uprościć język, w Javie nie jest obsługiwane dziedziczenie wielokrotne.

Rozważmy scenariusz, w którym A, B i C to trzy klasy. Klasa C dziedziczy klasy A i B. Jeśli klasy A i B mają tę samą metodę i wywołasz ją z obiektu klasy podrzędnej, wywołanie metody klasy A lub B będzie niejednoznaczne.

Ponieważ błędy w czasie kompilacji są lepsze niż błędy w czasie wykonywania, Java renderuje błąd w czasie kompilacji, jeśli odziedziczysz 2 klasy. Niezależnie od tego, czy zastosujesz tę samą, czy inną metodę, wystąpi błąd w czasie kompilacji.

tablica.z Java
 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? } } 
Przetestuj teraz
 Compile Time Error