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