Java: наследование, суперкласс и подкласс

Важным понятием объектно-ориентированного программирования является наследование. Он позволяет объектам определять отношения друг с другом. Как следует из названия, объект может наследовать характеристики от другого объекта.

Говоря более конкретно, объект может передавать свое состояние и поведение своим детям. Чтобы наследование работало, объекты должны иметь общие характеристики друг с другом.

В Java классы могут быть взяты из других классов, которые могут быть взяты от других и так далее. Это потому, что они могут наследовать функции от класса над ним, вплоть до самого верхнего класса Object.

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

Допустим, мы создали класс под названием Human, который представляет наши физические характеристики. Это общий класс, который может представлять вас, меня или кого-либо в мире. Его состояние отслеживает такие вещи, как количество ног, количество рук и группа крови. У него есть такие особенности поведения, как еда, сон и ходьба.

Человек хорош для того, чтобы получить общее представление о том, что делает нас всех одинаковыми, но не может, например, расскажите мне о гендерных различиях. Для этого нам нужно создать два новых типа классов под названием Man и Woman. Состояние и поведение этих двух классов будут отличаться друг от друга во многих отношениях, за исключением тех, которые они унаследовали от Human.

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

Что такое суперкласс?

В отношениях между двумя объектами суперкласс — это имя, данное классу, от которого наследуется. Это звучит как супер-пупер-класс, но помните, что это более общая версия. Лучшими именами для использования могут быть базовый класс или просто родительский класс.

Чтобы взять на этот раз более реальный пример, у нас может быть суперкласс с именем Person. Его состояние содержит имя, адрес, рост и вес человека, а также поведение, такое как поход по магазинам, заправка кровати и просмотр телевизора.

Мы могли бы сделать два новых класса, унаследованные от Person, с именами Student и Worker. Это более специализированные версии, потому что, хотя у них есть имена, адреса, они смотрят телевизор и ходят по магазинам, они также имеют характеристики, которые отличаются друг от друга.

Worker может иметь штат, в котором указана должность и место работы, в то время как студент может располагать данными по области обучения и учебному заведению..

Пример суперкласса:

Представьте, что вы определяете класс Person:

  открытый класс Person {} 

Новый класс можно создать, расширив этот класс:

  открытый класс Employee расширяет Person {} 

Класс Person считается суперклассом класса Employee.

Что такое подкласс?

В отношениях между двумя объектами подкласс — это имя, данное классу, который наследуется от суперкласса. Хотя это звучит немного скучно, помните, что это более специализированная версия суперкласса.

В предыдущем примере Student и Worker являются подклассами.

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

Сколько подклассов я могу иметь?

Вы можете иметь столько подклассов, сколько хотите. Нет ограничений на количество подклассов, которые может иметь суперкласс. Точно так же нет ограничений на количество уровней наследования. Иерархия классов может быть построена на определенной области общности.

На самом деле, если вы посмотрите на библиотеки Java API, вы увидите множество примеров наследования. . Каждый класс в API наследуется от класса java.lang.Object. Например, каждый раз, когда вы используете объект JFrame, вы находитесь в конце длинной строки наследования:

  java.lang  .Objectextended by java.awt.Componentextended by java.awt.Containerextended by java.awt.Windowextended by java.awt.Frameextended by javax.swing.JFrame  

В Java, когда подкласс наследуется от суперкласса, это называется «расширением» суперкласса.

Может ли мой подкласс наследовать от многих суперклассов?

Нет. В Java подкласс может расширять только один суперкласс.

Зачем использовать наследование?

Наследование позволяет программистам повторно использовать код, который они уже написали. В примере класса Human нам не нужно создавать новые поля в классе Man и Woman для хранения группы крови, потому что мы можем использовать ту, унаследованную от класса Human.

Еще одно преимущество использования наследования заключается в том, что оно позволяет нам обрабатывать подкласс, как если бы он был суперклассом. Например, предположим, что программа создала несколько экземпляров объектов Man и Woman. Программе может потребоваться вызвать режим сна для всех этих объектов. Поскольку поведение во сне является поведением суперкласса Human, мы можем сгруппировать все объекты Man и Woman вместе и рассматривать их, как если бы они были объектами Human..

Оцените статью
recture.ru
Добавить комментарий