Наследование в Java (с примером)
Что такое наследование?
наследование — это механизм, в котором один класс приобретает свойство другого класса. Например, ребенок наследует черты своих родителей. С помощью наследования мы можем повторно использовать поля и методы существующего класса. Следовательно, наследование облегчает повторное использование и является важной концепцией ООП.
Что такое наследование в Java?
Java наследование — это механизм, в котором один класс приобретает свойство другого класса. В Java, когда между двумя классами существует связь «Is-A», мы используем наследование. Родительский класс называется суперклассом, а унаследованный класс называется подклассом. Ключевое слово extends используется подклассом для наследования функций суперкласса. Наследование важно, поскольку оно приводит к возможности повторного использования кода.
Java Синтаксис наследования:
class subClass extends superClass
{
//methods and fields
}
Типы наследования в Java
Вот различные типы наследования в Java:
- Одиночное наследование
- Множественное наследование
- Многоуровневое наследование
- Иерархическое наследование
- Гибридное наследование
1. Единичное наследование:
При одиночном наследовании один класс расширяет другой класс (только один класс).

На приведенной выше диаграмме класс B расширяет только класс A. Класс A — это суперкласс, а класс B — подкласс.
2. Множественное наследование:
Множественное наследование – это один из видов наследования. Java типы, в которых один класс расширяет более одного класса. Java не поддерживает множественное наследование.

Согласно приведенной выше диаграмме, класс C расширяет класс A и класс B.
3. Многоуровневое наследование:
При многоуровневом наследовании один класс может наследовать от производного класса. Следовательно, производный класс становится базовым классом для нового класса.

Как показано на диаграмме, класс C является подклассом B, а B является подклассом A.
4. Иерархическое наследование:
При иерархическом наследовании один класс наследуется многими подклассами.

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











