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

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

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

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

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

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

class subClass extends superClass  
{  
   //methods and fields  
} 

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

Вот различные типы наследования в Java:

  1. Одиночное наследование
  2. Множественное наследование
  3. Многоуровневое наследование
  4. Иерархическое наследование
  5. Гибридное наследование

1. Единичное наследование:

При одиночном наследовании один класс расширяет другой класс (только один класс).

Единое наследование в Java
Одиночное наследование

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

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

Множественное наследование – это один из видов наследования. Java типы, в которых один класс расширяет более одного класса. Java не поддерживает множественное наследование.

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

Вот пример наследования в Java:


Пример 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. А другой для депозитного действия.

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

Наследование в ООП

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

  • Каждый из них имеет функции пополнения и вывода средств.
  • Это приведет к лишней дополнительной работе.

Наследование в ООП

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

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

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

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

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

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

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

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

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

Множественный запрос на изменение требований к программному обеспечению

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

Структурный подход к множественным запросам на изменение программного обеспечения

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

Подход ООП к множественным запросам на изменение

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

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

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

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

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

Подведем итог этой публикации следующим образом: