Что такое наследование?
Наследование - это механизм, при котором один класс приобретает свойство другого класса. Например, ребенок наследует черты своих родителей. С наследованием мы можем повторно использовать поля и методы существующего класса. Следовательно, наследование облегчает повторное использование и является важной концепцией ООП.
В этом руководстве вы узнаете:
- Типы наследования
- Наследование в 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.();
Изучите наследование в ООП на примере
Рассмотрим то же банковское приложение из предыдущего примера.
Мы должны открыть два разных типа счетов: один для сохранения, а другой для проверки (также известный как текущий).
Давайте сравним и изучим, как мы можем подойти к кодированию с точки зрения структурированного и объектно-ориентированного программирования. Структурный подход : в структурном программировании мы создадим две функции:
- Один, чтобы отозвать
- А другой - для действия депозита.
Поскольку работа этих функций остается одинаковой для всех учетных записей.
Подход ООП : при использовании подхода программирования ООП. Мы бы создали два класса.
- У каждого есть реализация функций ввода и вывода.
- Это будет лишней дополнительной работой.
Запрос на изменение в программном обеспечении
Теперь есть изменение в спецификации требований для чего-то, что так часто встречается в индустрии программного обеспечения. Вы должны добавить функциональность привилегированного банковского счета с возможностью овердрафта. В качестве фона, овердрафт - это средство, с помощью которого вы можете снять сумму, превышающую доступный остаток на вашем счете.
Структурный подход: используя функциональный подход, я должен изменить свою функцию вывода средств, которая уже протестирована и проработана. И добавьте метод, подобный приведенному ниже, который позаботится о новых требованиях.
Подход ООП: используя подход ООП, вам просто нужно написать новый класс с уникальной реализацией функции вывода. Мы никогда не касались тестируемого фрагмента кода.
Другой запрос на изменение
Что, если требование изменится и дальше? Хотелось бы добавить счет кредитной карты с собственными уникальными требованиями к депозитам .
Структурный подход: Используя структурный подход, вы должны снова изменить проверенный фрагмент кода депозита.
Подход ООП : но, используя объектно-ориентированный подход, вы просто создадите новый класс с его уникальной реализацией метода депозита (выделен красным на изображении ниже).
Таким образом, несмотря на то, что структурное программирование поначалу кажется простым подходом, в долгосрочной перспективе ООП выигрывает.
Преимущество наследования в ООП
Но кто-то может возразить, что во всех классах у вас есть повторяющиеся фрагменты кода.
Чтобы преодолеть это, вы создаете родительский класс, скажем «аккаунт», и реализуете ту же функцию пополнения и снятия. И сделать дочерние классы унаследованным от класса «account». Так что у них будет доступ к функциям снятия и депозита в классе счетов.
Функции не требуется реализовывать индивидуально. Это наследование в java. .