logo

Типи успадкування в Java

Спадщина є найпотужнішою особливістю об'єктно-орієнтованого програмування. Це дозволяє нам успадкувати властивості одного класу в інший клас. У цьому розділі ми обговоримо типи успадкування в Java детально з прикладами з реального життя. Також ми створимо програми на Java для реалізації концепції різних типів успадкування.

приклад даних json

Спадщина

Спадщина це механізм створення нового класу з існуючого класу. Існуючий (старий) клас відомий як базовий клас або супер клас або батьківський клас . Новий клас відомий як a похідний клас або підклас або дитячий клас . Це дозволяє нам використовувати властивості та поведінку одного класу (батька) в іншому класі (дочірньому).

Клас, властивості якого успадковуються, називається батьківський клас а клас, який успадковує властивості батьківського класу, називається дитячий клас . Таким чином, він встановлює зв’язок між батьківським і дочірнім класом, який відомий як батько-дочірній або Є відносини.

Припустимо, є два названих класи батько і дитина і ми хочемо успадкувати властивості класу Father у класі Child. Ми можемо досягти цього, використовуючи поширюється ключове слово.

 //inherits the properties of the Father class class Child extends Father { //functionality } 

Типи успадкування в Java

Коли ми повинні використовувати успадкування?

Спадок забезпечує багаторазове використання коду, особливо коли є великий обсяг коду для повторного використання. Він також встановлює зв’язок між різними класами, який відомий як a Є відносини. Ми також можемо використовувати його, якщо хочемо досягти перевизначення методу .

Пункти, які слід пам’ятати

  • Конструктор не можна успадкувати в Java.
  • Приватні члени не успадковуються в Java.
  • Циклічне успадкування не дозволено в Java.
  • Призначити батьківське посилання дочірнім об’єктам.
  • Конструктори виконуються через super(), присутній у конструкторі.

Види спадкування

Java підтримує такі чотири типи успадкування:

  • Єдине успадкування
  • Багаторівневе успадкування
  • Ієрархічне успадкування
  • Гібридне успадкування
Типи успадкування в Java

Примітка. Множинне успадкування не підтримується в Java.

Давайте обговоримо кожен на належному прикладі.

Єдине успадкування

При одинарному успадкуванні підклас походить лише від одного суперкласу. Він успадковує властивості та поведінку однобатьківського класу. Іноді його також називають просте успадкування .

Типи успадкування в Java

На наведеному вище малюнку Employee є батьківським класом, а Executive є дочірнім. Клас Executive успадковує всі властивості класу Employee.

Давайте запровадимо єдиний механізм успадкування в програмі Java.

Executive.java

 class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } } 

Вихід:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Багаторівневе успадкування

в багаторівневе успадкування , клас є похідним від класу, який також є похідним від іншого класу, називається багаторівневим успадкуванням. Простими словами, можна сказати, що клас, який має більше одного батьківського класу, називається багаторівневим успадкуванням. Зверніть увагу, що заняття повинні бути різнорівневими. Отже, існує один базовий клас і один похідний клас, але кілька проміжних базових класів.

Типи успадкування в Java

На наведеному вище малюнку клас Marks успадковує члени або методи класу Students. Клас Sports успадковує члени класу Marks. Отже, клас Student є батьківським класом для класу Marks, а клас Marks є батьківським для класу Sports. Отже, клас Sports неявно успадковує властивості Student разом із класом Marks.

Давайте реалізуємо механізм багаторівневого успадкування в програмі на Java.

MultilevelInheritanceExample.java

 //super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } } 

Вихід:

 registration number= 0987 marks= 78.0 score= 68.7 

Ієрархічне успадкування

Якщо кілька класів походять від одного базового класу, він називається ієрархічна спадковість .

Типи успадкування в Java

На наведеному вище малюнку класи Science, Commerce і Arts успадковують єдиний батьківський клас під назвою Student.

Давайте реалізуємо механізм ієрархічного успадкування в програмі на Java.

HierarchicalInheritanceExample.java

 //parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } } 

Вихід:

 The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked. 

Гібридне успадкування

Гібридні засоби складаються з більш ніж одного. Гібридне успадкування - це поєднання двох або більше типів успадкування.

Типи успадкування в Java

На наведеному вище малюнку Дід є суперкласом. Клас Father успадковує властивості класу GrandFather. Оскільки Батько та Дід представляють єдину спадщину. Крім того, клас Батько успадковується класом Син і Дочка. Таким чином, Батько стає батьківським класом для Сина і Дочки. Ці класи представляють ієрархічне успадкування. У сукупності це позначає гібридне успадкування.

Давайте реалізуємо механізм гібридного успадкування в програмі на Java.

Дочка.java

 //parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } } 

Вихід:

 I am daughter. 

Множинне успадкування (не підтримується)

Java не підтримує багаторазове успадкування через неоднозначність. Наприклад, розглянемо наступну програму Java.

Demo.java

 class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } } 

Наведений вище код дає помилку, оскільки компілятор не може вирішити, який метод message() потрібно викликати. З цієї причини Java не підтримує множинне успадкування на рівні класу, але це може бути досягнуто за допомогою інтерфейс .