Абстрактный класс против интерфейса
Абстрактный класс и Интерфейс - это две объектно-ориентированные конструкции, встречающиеся во многих объектно-ориентированных языках программирования, таких как Java. Абстрактный класс можно рассматривать как абстрактную версию обычного (конкретного) класса, а интерфейс можно рассматривать как средство реализации контракта. Абстрактный класс - это класс, который не может быть инициализирован, но может быть расширен. Интерфейс - это тип, который должен быть реализован другими классами. В Java абстрактные классы объявляются с использованием ключевого слова Abstract, а ключевое слово interface используется для определения интерфейса..
Что такое абстрактный класс?
Как правило, абстрактные классы, также известные как абстрактные базовые классы (ABC), не могут быть созданы (экземпляр этого класса не может быть создан). Таким образом, абстрактные классы имеют смысл, только если язык программирования поддерживает наследование (возможность создавать подклассы из расширения класса). Абстрактные классы обычно представляют абстрактную концепцию или сущность с частичной или без реализации. Таким образом, абстрактные классы действуют как родительские классы, из которых производные дочерние классы, так что дочерний класс будет использовать неполные функции родительского класса, и функциональные возможности могут быть добавлены для их завершения..
Абстрактные классы могут содержать Абстрактные методы. Подклассы, расширяющие абстрактный класс, могут реализовывать эти (унаследованные) абстрактные методы. Если дочерний класс реализует все такие абстрактные методы, это конкретный класс. Но если это не так, дочерний класс также становится абстрактным классом. Все это означает, что когда программист назначает класс в качестве абстрактного, он говорит, что класс будет неполным и в нем будут элементы, которые должны быть дополнены наследующими подклассами. Это хороший способ создать контракт между двумя программистами, который упрощает задачи при разработке программного обеспечения. Программист, который пишет код для наследования, должен точно следовать определениям методов (но, конечно, может иметь свою собственную реализацию).
Что такое интерфейс?
Интерфейс - это абстрактный тип, который используется для указания контракта, который должен быть реализован классами, которые реализуют этот интерфейс. Ключевое слово interface используется для определения интерфейса, а ключевое слово Implements используется для реализации интерфейса классом (на языке программирования Java). Обычно интерфейс содержит только сигнатуры методов и объявления констант. Любой интерфейс, который реализует определенный интерфейс, должен реализовывать все методы, определенные в интерфейсе, или должен быть объявлен как абстрактный класс. В Java тип ссылки на объект может быть определен как тип интерфейса. Но этот объект должен быть либо нулевым, либо содержать объект класса, который реализует этот конкретный интерфейс. Используя ключевое слово Implements в Java, вы можете реализовать несколько интерфейсов для одного класса..
В чем разница между абстрактным классом и интерфейсом?
Абстрактные классы обычно представляют абстрактное понятие или сущность с частичной реализацией или без нее. С другой стороны, интерфейс - это абстрактный тип, который используется для указания договора, который должен быть реализован классами. Абстрактные классы должны быть унаследованы (или расширены), а интерфейсы должны быть реализованы. Абстрактные классы могут содержать абстрактные методы, тогда как интерфейс должен содержать только абстрактные методы. Абстрактные классы могут содержать любые переменные, но интерфейсы могут определять только константы. Класс не может наследоваться от более чем одного абстрактного класса, но может реализовывать несколько интерфейсов. Интерфейс не может реализовать другой интерфейс. Однако интерфейс может расширять класс.