Абстрактный класс против наследования
Абстрактный класс и Наследование - две важные объектно-ориентированные концепции, встречающиеся во многих объектно-ориентированных языках программирования, таких как Java. Абстрактный класс можно рассматривать как абстрактную версию обычного (конкретного) класса, тогда как наследование позволяет новым классам расширять другие классы. Абстрактный класс - это класс, который не может быть инициализирован, но может быть расширен. Таким образом, абстрактные классы имеют смысл иметь только в том случае, если язык программирования поддерживает наследование. В Java абстрактные классы объявляются с использованием ключевого слова Abstract, а ключевое слово Extends используется для наследования от (супер) класса.
Что такое абстрактный класс?
Как правило, абстрактные классы, также известные как абстрактные базовые классы (ABC), не могут быть созданы (экземпляр этого класса не может быть создан). Таким образом, абстрактные классы имеют смысл иметь только в том случае, если язык программирования поддерживает наследование (возможность создавать подклассы из расширения класса). Абстрактные классы обычно представляют абстрактную концепцию или сущность с частичной реализацией или без нее. Таким образом, абстрактные классы действуют как родительские классы, от которых происходят дочерние классы, так что дочерний класс будет разделять неполные функции родительского класса, а функциональные возможности могут быть добавлены для их дополнения.
Абстрактные классы могут содержать абстрактные методы. Подклассы, расширяющие абстрактный класс, могут реализовывать эти (унаследованные) абстрактные методы. Если дочерний класс реализует все такие абстрактные методы, это конкретный класс. Но если это не так, дочерний класс также становится абстрактным классом. Все это означает, что, когда программист назначает класс абстрактным, он говорит, что класс будет неполным и в нем будут элементы, которые должны быть дополнены унаследованными подклассами. Это хороший способ заключить договор между двумя программистами, упрощающий задачи по разработке программного обеспечения. Программист, который пишет код для наследования, должен точно следовать определениям методов (но, конечно, может иметь свою собственную реализацию).
Что такое наследование?
Наследование - это объектно-ориентированная концепция, которая позволяет новым классам расширять другие классы. Ключевое слово extends используется для реализации концепции наследования в языке программирования Java. Наследование по существу обеспечивает повторное использование кода, позволяя расширять свойства и поведение существующего класса вновь определенным классом. Когда новый подкласс (или производный класс) расширяет суперкласс (или родительский класс), этот подкласс наследует все атрибуты и методы суперкласса. Подкласс может дополнительно переопределять поведение (предоставлять новые или расширенные функции методам), унаследованное от родительского класса. Как правило, подкласс A не может расширять несколько суперклассов (например, в Java). Поэтому вы не можете использовать расширения для множественного наследования. Чтобы иметь множественное наследование, вам нужно использовать интерфейсы.
В чем разница между абстрактным классом и наследованием?
Абстрактные классы обычно представляют абстрактную концепцию или сущность с частичной реализацией или без нее. Наследование позволяет новым классам расширять другие классы. Поскольку абстрактные классы не могут быть созданы, вам необходимо использовать концепцию наследования, чтобы использовать абстрактные классы. В противном случае абстрактный класс бесполезен. Абстрактные классы могут содержать абстрактные методы, и когда класс расширяется, все методы (абстрактные и конкретные) наследуются. Унаследованный класс может реализовать любой или все методы. Если все абстрактные методы не реализованы, то этот класс также становится абстрактным классом. Класс не может наследовать более чем от одного абстрактного класса (это не свойство абстрактных классов как таковое, а скорее ограничение наследования).
Похожие посты:
Разница между абстрактным классом и конкретным классом
Разница между виртуальным и абстрактным
Разница между абстрактным классом и интерфейсом
Разница между орудиями и удлинителями
Разница между графом и деревом
В рубрике: Программирование С тегами: ABC, абстрактный, Абстрактные базовые классы, Абстрактный класс, Абстрактные классы, Абстрактное ключевое слово, Абстрактные методы, конкретный класс, Ключевое слово расширяет, Наследование, Класс наследования, унаследованный класс, Java, множественное наследование, объектно-ориентированные концепции, обычный класс, суперкласс
Об авторе: Indika
Индика, BSc. Eng, MSECE Computer Engineering, PhD. Информатика, является доцентом и занимается исследованиями в области биоинформатики, вычислительной биологии и биомедицинской обработки естественного языка.
Комментарии
-
Джейсон говорит
30 августа 2017 г., 13:25
Спасибо за объяснение разницы. Все мои вопросы были решены этим.
Ответить
-
Аус говорит
10 мая 2019 г., 15:04
лучший ответ в сети, Учитель ни хрена не объясняет и не имеет смысла, монотон мф. Вот как вы объясняете понятия.
Ответить
Оставить ответ Отменить ответ
Ваш адрес электронной почты не будет опубликован. Обязательные поля помечены
Комментарий
Имя
Электронная почта
Сайт