Что отличается между абстрактным и интерфейсным классом в C #? - PullRequest
4 голосов
/ 14 марта 2011

Чем отличается аннотация от класса Interface в C #?

Ответы [ 8 ]

8 голосов
/ 14 марта 2011

Интерфейс не является классом , это просто контракт , который определяет public членов, которые класс должен реализовать.

Абстрактный класс - это просто класс, из которого вы не можете создать экземпляр.Обычно вы используете его для определения базового класса, который определяет некоторые виртуальные методы для производных классов для реализации.

2 голосов
/ 14 марта 2011

Вместо того, чтобы писать все это здесь ..

try http://www.codeproject.com/KB/cs/abstractsvsinterfaces.aspx

1 голос
/ 14 марта 2011

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

в любом случае, разница не только в синтаксической проблеме.надеюсь, это поможет.

1 голос
/ 14 марта 2011

Класс может реализовывать несколько интерфейсов, но может наследовать только от одного абстрактного класса.

Абстрактный класс может предоставлять реализацию для своих методов.Интерфейс не может обеспечить реализации.

0 голосов
/ 15 мая 2012

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

0 голосов
/ 14 марта 2011

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

Интерфейс также является абстракцией и в c # заменяет множественное наследование классов, так что это может сбивать с толку, но вы должны различать, когдаиспользуйте что.

Надеюсь, это поможет, Роберт

0 голосов
/ 14 марта 2011

Класс может реализовать несколько интерфейсы, но могут наследовать только от один абстрактный класс.

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

0 голосов
/ 14 марта 2011

Google "абстрактный класс против интерфейса", и вы получите множество пояснительных статей ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...