Учебники

31) Наследование

Что такое наследование?

Наследование — это механизм, при котором один класс приобретает свойство другого класса. Например, ребенок наследует черты своих родителей. С наследованием мы можем повторно использовать поля и методы существующего класса. Следовательно, наследование облегчает повторное использование и является важной концепцией ООП.

В этом уроке вы узнаете

Типы Наследования

Существуют различные типы наследования в Java:

Одиночное наследование:

В Single Inheritance один класс расширяет другой класс (только один класс).

Типы Наследования
Единственное Наследование

На приведенной выше диаграмме класс B расширяет только класс A. Класс A является суперклассом, а класс B является подклассом.

Множественное наследование:

В множественном наследовании один класс расширяет несколько классов. Java не поддерживает множественное наследование.

Типы Наследования
Множественное наследование

Согласно приведенной выше диаграмме, класс C расширяет класс A и класс B.

Многоуровневое наследование:

В многоуровневом наследовании один класс может наследоваться от производного класса. Следовательно, производный класс становится базовым классом для нового класса.

Типы Наследования
Многоуровневое наследование

Как показано на схеме, класс C является подклассом B, а B является подклассом класса A.

Иерархическое наследование:

В иерархическом наследовании один класс наследуется многими подклассами.

Типы Наследования
Иерархическое наследование

Как в примере выше, классы B, C и D наследуют один и тот же класс A.

Гибридное наследование:

Гибридное наследование представляет собой комбинацию одиночного и множественного наследования.

Типы Наследования
Гибридное наследование

Как в приведенном выше примере, все открытые и защищенные члены класса A наследуются в класс D, сначала через класс B, а затем через класс C.

Примечание: Java не поддерживает гибридное / множественное наследование

Наследование в Java

JAVA INHERITANCE — это механизм, при котором один класс приобретает свойство другого класса. В Java, когда между двумя классами существует отношение «Is-A», мы используем Наследование. Родительский класс называется суперклассом, а унаследованный класс называется подклассом. Ключевое слово extendsиспользуется подклассом для наследования функций суперкласса.

Наследование важно, поскольку оно приводит к возможности повторного использования кода.

Синтаксис наследования Java:

class subClass extends superClass  
{  
   //methods and fields  
}  

Пример наследования Java

Наследование в примере Java

class Doctor {
 void Doctor_Details() {
  System.out.println("Doctor Details...");
 }
}

class Surgeon extends Doctor {
 void Surgeon_Details() {
  System.out.println("Surgen Detail...");
 }
}

public class Hospital {
 public static void main(String args[]) {
  Surgeon s = new Surgeon();
  s.Doctor_Details();
  s.Surgeon_Details();
 }
}

Супер Ключевое слово

Ключевое слово super похоже на ключевое слово this.

Ключевое слово super может использоваться для доступа к любому элементу данных или методам родительского класса.

Ключевое слово Super может использоваться на уровне переменных, методов и конструкторов.

Синтаксис:

super.<method-name>();

Изучить наследование в ООП с примером

Рассмотрим то же банковское приложение из предыдущего примера.

Мы должны открыть два разных типа счетов, один для сохранения и другой для проверки (также известный как текущий).

Наследование Java и полиморфизм

Давайте сравним и изучим, как мы можем подходить к кодированию с точки зрения структурированного и объектно-ориентированного программирования. Структурный подход . В структурном программировании мы создадим две функции:

  1. Один вывести
  2. И другой для депозитного действия.

Поскольку работа этих функций остается одинаковой для всех учетных записей.

Наследование Java и полиморфизм

Подход ООП : при использовании подхода программирования ООП. Мы бы создали два класса.

  • У каждого есть реализация функций пополнения и снятия.
  • Это будет лишней дополнительной работой.

Наследование Java и полиморфизм

Запрос на изменение в программном обеспечении

Теперь в спецификации требований есть что-то такое распространенное в индустрии программного обеспечения. Вы должны добавить функциональность привилегированного банковского счета с помощью овердрафта. Для справки, овердрафт — это средство, с помощью которого вы можете снять сумму, превышающую доступный остаток на вашем счете.

Наследование Java и полиморфизм

Структурный подход: используя функциональный подход, я должен изменить свою функцию вывода, которая уже проверена и обоснована. И добавьте метод, как показано ниже, позаботится о новых требованиях.

Наследование Java и полиморфизм

Подход ООП: Используя подход ООП, вам просто нужно написать новый класс с уникальной реализацией функции изъятия. Мы никогда не трогали проверенный кусок кода.

Наследование Java и полиморфизм

Еще один запрос на изменение

Что если требование изменится дальше? Как добавить учетную запись кредитной карты со своим собственным уникальным требованием депозитов .

Наследование Java и полиморфизм

Структурный подход. Используя структурный подход, вы должны снова изменить проверенный код депозита.

Наследование Java и полиморфизм

Подход ООП : Но, используя объектно-ориентированный подход, вы просто создадите новый класс с его уникальной реализацией метода внесения (выделено красным на рисунке ниже).

Таким образом, несмотря на то, что структурное программирование на первый взгляд кажется простым, ООП выигрывает в долгосрочной перспективе.

Наследование Java и полиморфизм

Преимущество наследования в ООП

Но можно утверждать, что во всех классах у вас есть повторяющиеся фрагменты кода.

Чтобы преодолеть это, вы создаете родительский класс, скажем «account» и реализуете ту же функцию пополнения и снятия. И сделать дочерние классы унаследованными «учетными» классами. Так что у них будет доступ к функциям вывода и пополнения счета в своем классе.

Функции не должны быть реализованы индивидуально. Это наследование в Java. ,

Наследование Java и полиморфизм

Наследование Java и полиморфизм