Решил собрать в одну таблицу различия между abstract class и interface.
Abstract Class | Interface |
---|---|
Абстрактные методы нужно указывать явно с помощью ключевого слова abstract | Все методы являются абстрактными |
В силу отсутствия множественного наследования, класс может наследовать только один абстрактный класс, но может наследовать много интерфейсов, и все это одновременно | Может наследовать много интерфейсов, но не может наследовать класс |
Абстрактные методы можно объявлять с идентификаторами доступа (public, protected, private). При реализации в классе-потомке методы должны иметь такой же модификатор или менее ограниченный | Все методы публичные |
Может содержать: методы с реализацией, поля члены данных, константы. | Может содержать константы |
В наследуемом от класса классе константа может быть переопределена | В наследуемом от класса классе константа НЕ может быть переопределена |
Как видите отличия есть и они существенны, удачки в освоении.