logo

Спадкування в Java

  1. Спадщина
  2. Види спадкування
  3. Чому множинне успадкування неможливе в Java у випадку класу?

Спадкування в Java це механізм, у якому один об’єкт набуває всіх властивостей і поведінки батьківського об’єкта. Це важлива частина ООП (Об'єктно-орієнтована система програмування).

перетворити рядок на int

Ідея успадкування в Java полягає в тому, що ви можете створювати нові класи які побудовані на основі існуючих класів. Коли ви успадковуєте існуючий клас, ви можете повторно використовувати методи та поля батьківського класу. Крім того, ви також можете додавати нові методи та поля у свій поточний клас.

Спадщина представляє Відношення Є-А який також відомий як a батько-дитина відносини.

Навіщо використовувати успадкування в java

Терміни, що використовуються в спадкуванні

    Клас:Клас - це група об'єктів, які мають спільні властивості. Це шаблон або проект, на основі якого створюються об’єкти.Підклас/Дочірній клас:Підклас — це клас, який успадковує інший клас. Його також називають похідним класом, розширеним класом або дочірнім класом.Супер клас/батьківський клас:Суперклас — це клас, від якого підклас успадковує функції. Його також називають базовим класом або батьківським класом.Повторне використання:Як випливає з назви, можливість повторного використання — це механізм, який полегшує повторне використання полів і методів існуючого класу під час створення нового класу. Ви можете використовувати ті самі поля та методи, які вже визначені в попередньому класі.

Синтаксис успадкування Java

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

The розширює ключове слово вказує на те, що ви створюєте новий клас, який є похідним від існуючого класу. Значення «розширює» полягає в тому, щоб збільшити функціональність.

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


Приклад успадкування Java

Спадкування в Java

Як показано на малюнку вище, Programmer є підкласом, а Employee є суперкласом. Відносини між двома класами є Програміст Є-Співробітник . Це означає, що програміст – це різновид працівника.

 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); } } 
Перевірте зараз
 Programmer salary is:40000.0 Bonus of programmer is:10000 

У наведеному вище прикладі об’єкт Programmer може отримати доступ до поля власного класу, а також класу Employee, тобто можливість повторного використання коду.


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

На основі класу в java може бути три типи успадкування: однорівневе, багаторівневе та ієрархічне.

лексикографічно

У програмуванні на Java множинне та гібридне успадкування підтримується лише через інтерфейс. Про інтерфейси ми дізнаємося пізніше.

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

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

Коли один клас успадковує кілька класів, це називається множинним успадкуванням. Наприклад:

Множинне успадкування в Java

Приклад єдиного успадкування

Коли клас успадковує інший клас, він відомий як a єдине успадкування . У наведеному нижче прикладі клас Dog успадковує клас Animal, тому є єдине успадкування.

Файл: 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(); }} 

Вихід:

 barking... eating... 

Приклад багаторівневого успадкування

Якщо існує ланцюг успадкування, це називається багаторівневе успадкування . Як ви можете бачити в наведеному нижче прикладі, клас BabyDog успадковує клас Dog, який знову успадковує клас Animal, тому існує багаторівневе успадкування.

Файл: 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(); }} 

Вихід:

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

Приклад ієрархічного успадкування

Коли два або більше класів успадковують один клас, це називається ієрархічна спадковість . У наведеному нижче прикладі класи Dog і Cat успадковують клас Animal, тому існує ієрархічне успадкування.

Файл: 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 }} 

Вихід:

міститься в рядку
 meowing... eating... 

Q) Чому множинне успадкування не підтримується в java?

Щоб зменшити складність і спростити мову, множинне успадкування не підтримується в java.

Розглянемо сценарій, де A, B і C є трьома класами. Клас C успадковує класи A і B. Якщо класи A і B мають однаковий метод, і ви викликаєте його з об’єкта дочірнього класу, виникне неоднозначність виклику методу класу A або B.

Оскільки помилки під час компіляції краще, ніж помилки під час виконання, Java відображає помилку під час компіляції, якщо ви успадкуєте 2 класи. Отже, незалежно від того, чи є у вас той самий метод, чи інший, буде помилка часу компіляції.

 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? } } 
Перевірте зараз
 Compile Time Error