logo

Видове наследяване в Java

Наследство е най-мощната характеристика на обектно-ориентираното програмиране. Позволява ни да наследим свойствата на един клас в друг клас. В този раздел ще обсъдим типове наследяване в Java задълбочено с примери от реалния живот. Също така, ние ще създадем Java програми за прилагане на концепцията за различни видове наследяване.

е протеинова мазнина

Наследство

Наследство е механизъм за управление на нов клас от съществуващ клас. Съществуващият (стар) клас е известен като базов клас или супер класа или родителски клас . Новият клас е известен като 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.

Демо.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 не поддържа множество наследявания на ниво клас, но може да се постигне чрез an интерфейс .