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

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

Также я знаю, что интерфейс - это не класс. Это сущность, которая определяется словом Интерфейс. Интерфейс не имеет реализации; он имеет только подпись или, другими словами, только определение методов без тела. Как одно из сходств с абстрактным классом, это контракт, который используется для определения иерархий для всех подклассов или он определяет конкретный набор методов и их аргументы. Основное различие между ними заключается в том, что класс может реализовывать более одного интерфейса, но может наследовать только от одного абстрактного класса. Поскольку C # не поддерживает множественное наследование, интерфейсы используются для реализации множественного наследования.

Когда мы создаем интерфейс, мы в основном создаем набор методов без какой-либо реализации, которые должны быть переопределены реализованными классами. Преимущество состоит в том, что он позволяет классу быть частью двух классов: одного из иерархии наследования и одного из интерфейса.

Когда мы создаем абстрактный класс, мы создаем базовый класс, который может иметь один или несколько завершенных методов, но по крайней мере один или несколько методов остаются незавершенными и объявляются абстрактными. Если все методы абстрактного класса не завершены, то это то же самое, что и интерфейс.

НО НО НО

Я заметил что у нас будетМетоды интерфейса по умолчанию в C # 8.0

Может быть, я спрашиваю об этом, потому что у меня есть только 1-2 года опыта в программировании, но в чем будет основное отличие абстрактного класса от интерфейса сейчас?

Я знаю, что мы не можем сделать состояние в интерфейсе, будет ли это только одно различие между ними?

Ответы на вопрос(3)

Ваш ответ на вопрос