Interface vs Abstract class [дубликат]

405
13 января 2017, 07:10

На данный вопрос уже ответили:

  • Отличия абстрактного класса от интерфейса (abstract class and interface) 7 ответов

Привет, сообщество. В чем различие абстрактного класса от интерфейса в C#? Ведь можно сказать, что абстрактный класс, в котором все методы не имеют реализации и помечены как абстрактные, в каком-то роде является интерфейсом. Да, есть существенное различие - интерфейс описывает поведение объекта, т.е. его надо полностью реализовать, в отличие от абстрактного класса в котором, не реализовав абстрактные методы, наследник тоже станем абстрактным классом. Я так понимаю, что интерфейс описывает общее поведение без реализации (для каждого класса своя), а абстрактный класс тогда что делает?

Answer 1

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

А вообще, где-то был вопрос с ответом, охватывающий ещё и семантическую разницу между ними. Сейчас поищу. Нашёл. Проголосовал за закрытие этого как дубликата.

Answer 2

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

READ ALSO
Есть ли какая-то выгода от использования Dispatcher в WinForms?

Есть ли какая-то выгода от использования Dispatcher в WinForms?

В WinForms можно воспользоваться классов WPF- Dispatcher для доступа к UI из разных потоков

313
Почему код работает не корректно? [требует правки]

Почему код работает не корректно? [требует правки]

Надо чтобы софт находил хеш даже если заменил комбинации, но почему-то он и не находит, не знаю почему

453
usercontrol с различными шаблонами данных

usercontrol с различными шаблонами данных

добрый деньЕсть некоторый объект, приходящий от сервера вк

323
Создать изображение контрола

Создать изображение контрола

Мне нужно создать изображение контролаДелаю таким образом

310