Спадкування Java (з прикладами)

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

Спадкування - одна з ключових особливостей ООП, яка дозволяє нам створити новий клас із існуючого класу.

Створений новий клас відомий як підклас (дочірній або похідний клас), а існуючий клас, звідки походить дочірній клас, відомий як суперклас (батьківський або базовий клас).

extendsКлючове слово використовується для виконання успадкування в Java. Наприклад,

 class Animal ( // methods and fields ) // use of extends keyword // to perform inheritance class Dog extends Animal ( // methods and fields of Animal // methods and fields of Dog )

У наведеному вище прикладі клас Dog створюється шляхом успадкування методів та полів з класу Animal.

Тут собака є підкласом, а тварина - суперкласом.

Приклад 1: Спадкування Java

 class Animal ( // field and method of the parent class String name; public void eat() ( System.out.println("I can eat"); ) ) // inherit from Animal class Dog extends Animal ( // new method in subclass public void display() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access field of superclass labrador.name = "Rohu"; labrador.display(); // call method of superclass // using object of subclass labrador.eat(); ) )

Вихідні дані

 Мене звуть Роху, я можу їсти

У наведеному вище прикладі ми отримали підклас Dog від суперкласу Animal. Зверніть увагу на заяви,

 labrador.name = "Rohu"; labrador.eat();

Тут лабрадор є об’єктом собаки. Однак назвіть і eat()є членами класу Animal.

Оскільки Dog успадковує поле та метод від Animal, ми можемо отримати доступ до поля та методу за допомогою об'єкта Dog.

Впровадження спадщини Java

є-відносини

В Java, спадкування є є різновидом відносини. Тобто, ми використовуємо успадкування лише тоді, коли існує взаємозв’язок is-a між двома класами. Наприклад,

  • Автомобіль - це транспортний засіб
  • Апельсин - це фрукт
  • Хірург - лікар
  • Собака - тварина

Тут автомобіль може успадкувати від автомобіля , помаранчевий - від фруктів тощо.

Перевизначення методу у спадкуванні Java

У прикладі 1 ми бачимо, що об’єкт підкласу може отримати доступ до методу суперкласу.

Однак, якщо один і той же метод присутній і в суперкласі, і в підкласі, що станеться?

У цьому випадку метод у підкласі замінює метод у суперкласі. Ця концепція відома як перевизначення методу в Java.

Приклад 2: Перевизначення методу у спадкуванні Java

 class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )

Вихідні дані

 Я їжу собачу їжу, яку можу гавкати

У наведеному вище прикладі eat()метод присутній як у суперкласі Animal, так і в підкласі Dog.

Тут ми створили об’єкт лабрадор собаки.

Тепер, коли ми викликаємо eat()за допомогою об'єкта labrador, викликається метод усередині Dog. Це тому, що метод всередині похідного класу замінює метод всередині базового класу.

Це називається перевизначенням методу. Щоб дізнатися більше, відвідайте Заміна методу Java.

Примітка : Ми використовували @Overrideанотацію, щоб сказати компілятору, що ми перевизначаємо метод. Однак анотація не є обов’язковою. Щоб дізнатись більше, відвідайте Анотації Java.

супер ключове слово у спадкуванні Java

Раніше ми бачили, що той самий метод у підкласі замінює метод у суперкласі.

In such a situation, the super keyword is used to call the method of the parent class from the method of the child class.

Example 3: super Keyword in Inheritance

 class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( // call method of superclass super.eat(); System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )

Output

 I can eat I eat dog food I can bark 

In the above example, the eat() method is present in both the base class Animal and the derived class Dog. Notice the statement,

 super.eat();

Here, the super keyword is used to call the eat() method present in the superclass.

We can also use the super keyword to call the constructor of the superclass from the constructor of the subclass. To learn more, visit Java super keyword.

protected Members in Inheritance

In Java, if a class includes protected fields and methods, then these fields and methods are accessible from the subclass of the class.

Example 4: protected Members in Inheritance

 class Animal ( protected String name; protected void display() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void getInfo() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access protected field and method // using the object of subclass labrador.name = "Rocky"; labrador.display(); labrador.getInfo(); ) )

Output

 I am an animal. My name is Rocky

In the above example, we have created a class named Animal. The class includes a protected field: name and a method: display().

We have inherited the Dog class inherits Animal. Notice the statement,

 labrador.name = "Rocky"; labrador.display();

Here, we are able to access the protected field and method of the superclass using the labrador object of the subclass.

Why use inheritance?

  • The most important use of inheritance in Java is code reusability. The code that is present in the parent class can be directly used by the child class.
  • Method overriding is also known as runtime polymorphism. Hence, we can achieve Polymorphism in Java with the help of inheritance.

Types of inheritance

There are five types of inheritance.

1. Single Inheritance

При єдиному успадкуванні один підклас поширюється на один суперклас. Наприклад,

Одиночне успадкування Java

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

При багаторівневому успадкуванні підклас поширюється від суперкласу, а потім той самий підклас діє як суперклас для іншого класу. Наприклад,

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

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

В ієрархічному успадкуванні кілька підкласів поширюються від одного суперкласу. Наприклад,

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

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

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

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

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

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

Гібридне успадкування - це поєднання двох або більше видів успадкування. Наприклад,

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

Тут ми об’єднали ієрархічне та множинне успадкування, щоб сформувати гібридне успадкування.

Цікаві статті...