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

Содержание:

Anonim

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

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

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

  • Типы наследования
  • Наследование в Java
  • Пример наследования Java
  • Супер ключевое слово
  • Изучите наследование в ООП на примере

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

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

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

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

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

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

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

В множественном наследовании - один класс, расширяющий более одного класса. Java не поддерживает множественное наследование.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

НАСЛЕДОВАНИЕ JAVA - это механизм, в котором один класс приобретает свойство другого класса. В Java, когда между двумя классами существует связь «Is-A», мы используем наследование. Родительский класс называется суперклассом, а унаследованный класс - подклассом. Ключевое слово

extends используется подклассом для наследования функций суперкласса.

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

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

class subClass extends superClass{//methods and fields}

Пример наследования 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.();

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

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

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

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

  1. Один, чтобы отозвать
  2. А другой - для действия депозита.

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

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

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

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

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

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

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

Другой запрос на изменение

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

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

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

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

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

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

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

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