Важной концепцией в объектно-ориентированном программировании является наследование. Это обеспечивает способ для объекты определить отношения друг с другом. Как следует из названия, объект может наследовать характеристики от другого объекта.
Говоря более конкретно, объект может передать свое состояние и поведение своим детям. Чтобы наследование работало, объекты должны иметь общие характеристики.
В Джава, классы могут быть взяты из других классов, которые могут быть взяты из других, и так далее. Это потому, что они могут наследовать функции от класса над ним, вплоть до самого верхнего класса Object.
Пример наследования Java
Допустим, мы создали класс под названием Human, который представляет наши физические характеристики. Это общий класс, который может представлять вас, меня или любого человека в мире. Его состояние отслеживает такие вещи, как количество ног, количество рук и группа крови. Это поведение, как есть, спать и ходить.
Человек хорош для того, чтобы получить общее представление о том, что делает нас всех одинаковыми, но он не может, например, рассказать мне о гендерных различиях. Для этого нам нужно создать два новых типа классов - «Мужчина и женщина» Состояние и поведение этих двух классов будут отличаться друг от друга во многих отношениях, за исключением тех, которые они наследуют от человека.
Следовательно, наследование позволяет нам включать состояние и поведение родительского класса в его дочерний. Затем дочерний класс может расширить состояние и поведение, чтобы отразить различия, которые он представляет. Самым важным аспектом этой концепции, которую следует помнить, является то, что дочерний класс является более специализированной версией родителя.
Что такое суперкласс?
В отношениях между двумя объектами суперкласс - это имя, данное классу, от которого наследуется. Это звучит как супер-пупер класс, но помните, что это более общая версия. Лучшими именами для использования могут быть базовый класс или просто родительский класс.
Чтобы взять более реальный пример на этот раз, мы могли бы иметь суперкласс под названием Person. В этом состоянии хранится имя, адрес, рост и вес человека, а также поведение, такое как ходить по магазинам, застелить кровать и смотреть телевизор.
Мы могли бы создать два новых класса, унаследованных от Person, под названием Student и Worker. Это более специализированные версии, потому что, хотя у них есть имена, адреса, они смотрят телевизор и ходят по магазинам, они также имеют характеристики, которые отличаются друг от друга.
У работника может быть штат с названием должности и местом работы, тогда как у ученика могут быть данные о области обучения и учебном заведении.
Пример суперкласса:
Представьте, что вы определяете класс Person:
человек публичного класса. { }
Новый класс может быть создан путем расширения этого класса:
Общественный класс Сотрудник расширяет Лицо. { }
Класс Person называется суперклассом класса Employee.
Что такое подкласс?
В отношениях между двумя объектами подкласс - это имя, данное классу, который наследуется от суперкласса. Хотя это звучит немного скучно, помните, что это более специализированная версия суперкласса.
В предыдущем примере Student и Worker являются подклассами.
Подклассы также могут быть известны как производные классы, дочерние классы или расширенные классы.
Сколько подклассов я могу иметь?
Вы можете иметь столько подклассов, сколько захотите. Нет ограничений на количество подклассов, которое может иметь суперкласс. Кроме того, нет ограничений на количество уровней наследования. Иерархия классов может быть построена на определенной области общности.
Фактически, если вы посмотрите на библиотеки API Java, вы увидите много примеров наследования. Каждый класс в API наследуется от класса с именем java.lang. Объект. Например, каждый раз, когда вы используете объект JFrame, вы находитесь в конце длинной строки наследования:
java.lang. Объект. продлен java.awt. Компонент. продлен java.awt. Контейнер. продлен java.awt. Окно. продлен java.awt. Рамка. продлен javax.swing. JFrame.
В Java, когда подкласс наследует от суперкласса, он известен как «расширение» суперкласса.
Может ли мой подкласс наследовать от многих суперклассов?
Нет. В Java подкласс может расширять только один суперкласс.
Зачем использовать наследование?
Наследование позволяет программистам повторно использовать код, который они уже написали. В примере класса Human нам не нужно создавать новые поля в классе Man и Woman для хранения группы крови, потому что мы можем использовать поле, унаследованное от класса Human.
Другое преимущество использования наследования заключается в том, что он позволяет нам обрабатывать подкласс, как если бы он был суперклассом. Например, предположим, что программа создала несколько экземпляров объектов «Мужчина» и «Женщина». Программе может потребоваться вызвать режим сна для всех этих объектов. Поскольку поведение во сне - это поведение суперкласса Человека, мы можем сгруппировать все объекты «Мужчина» и «Женщина» и обращаться с ними, как если бы они были объектами Человека.