Спадкування в Java це механізм, у якому один об’єкт набуває всіх властивостей і поведінки батьківського об’єкта. Це важлива частина ООП (Об'єктно-орієнтована система програмування).
перетворити рядок на int
Ідея успадкування в Java полягає в тому, що ви можете створювати нові класи які побудовані на основі існуючих класів. Коли ви успадковуєте існуючий клас, ви можете повторно використовувати методи та поля батьківського класу. Крім того, ви також можете додавати нові методи та поля у свій поточний клас.
Спадщина представляє Відношення Є-А який також відомий як a батько-дитина відносини.
Навіщо використовувати успадкування в java
- для Перевизначення методу (так поліморфізм часу виконання можна досягти).
- Для повторного використання коду.
Терміни, що використовуються в спадкуванні
Синтаксис успадкування Java
class Subclass-name extends Superclass-name { //methods and fields }
The розширює ключове слово вказує на те, що ви створюєте новий клас, який є похідним від існуючого класу. Значення «розширює» полягає в тому, щоб збільшити функціональність.
У термінології 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 через клас.
Коли один клас успадковує кілька класів, це називається множинним успадкуванням. Наприклад:
Приклад єдиного успадкування
Коли клас успадковує інший клас, він відомий як 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