Разница между абстрактным классом и наследованием

Абстрактный класс против наследования

Абстрактный класс и Наследование - это две важные объектно-ориентированные концепции, встречающиеся во многих объектно-ориентированных языках программирования, таких как Java. Абстрактный класс можно рассматривать как абстрактную версию обычного (конкретного) класса, а наследование позволяет новым классам расширять другие классы. Абстрактный класс - это класс, который не может быть инициализирован, но может быть расширен. Таким образом, абстрактные классы имеют смысл только в том случае, если язык программирования поддерживает наследование. В Java абстрактные классы объявляются с использованием ключевого слова Abstract, а ключевое слово Extends используется для наследования от (супер) класса.

Что такое абстрактный класс?

Как правило, абстрактные классы, также известные как абстрактные базовые классы (ABC), не могут быть созданы (экземпляр этого класса не может быть создан). Таким образом, абстрактные классы имеют смысл, только если язык программирования поддерживает наследование (возможность создавать подклассы из расширения класса). Абстрактные классы обычно представляют абстрактную концепцию или сущность с частичной или без реализации. Таким образом, абстрактные классы действуют как родительские классы, из которых производные дочерние классы, так что дочерний класс будет использовать неполные функции родительского класса, и функциональные возможности могут быть добавлены для их завершения..

Абстрактные классы могут содержать Абстрактные методы. Подклассы, расширяющие абстрактный класс, могут реализовывать эти (унаследованные) абстрактные методы. Если дочерний класс реализует все такие абстрактные методы, это конкретный класс. Но если это не так, дочерний класс также становится абстрактным классом. Все это означает, что когда программист назначает класс в качестве абстрактного, он говорит, что класс будет неполным и в нем будут элементы, которые должны быть дополнены наследующими подклассами. Это хороший способ создать контракт между двумя программистами, который упрощает задачи при разработке программного обеспечения. Программист, который пишет код для наследования, должен точно следовать определениям методов (но, конечно, может иметь свою собственную реализацию).

Что такое наследование?

Наследование - это объектно-ориентированная концепция, которая позволяет новым классам расширять другие классы. Ключевое слово Extends используется для реализации концепции наследования в языке программирования Java. Наследование по существу обеспечивает повторное использование кода, позволяя расширять свойства и поведение существующего класса вновь определенным классом. Когда новый подкласс (или производный класс) расширяет суперкласс (или родительский класс), этот подкласс наследует все атрибуты и методы суперкласса. Подкласс может по желанию переопределить поведение (предоставить новую или расширенную функциональность методам), унаследованное от родительского класса. Как правило, подкласс не может расширять несколько суперклассов (например, в Java). Следовательно, вы не можете использовать extends для множественного наследования. Чтобы иметь множественное наследование, вам нужно использовать интерфейсы.

В чем разница между абстрактным классом и наследованием?

Абстрактные классы обычно представляют абстрактное понятие или сущность с частичной реализацией или без нее. Наследование позволяет новым классам расширять другие классы. Поскольку классы Abstract не могут быть созданы, вам нужно использовать концепцию наследования, чтобы использовать классы Abstract. В противном случае абстрактный класс не имеет смысла. Абстрактные классы могут содержать абстрактные методы, и когда класс расширяется, все методы (абстрактный и конкретный) наследуются. Унаследованный класс может реализовывать любой или все методы. Если все абстрактные методы не реализованы, то этот класс также становится абстрактным классом. Класс не может наследовать от более чем одного абстрактного класса (это не качество абстрактных классов как таковых, а скорее ограничение наследования).