Разлика између класе апстракције и интерфејса у Ц #

Сажетак

Апстрактна класа је она која је замишљена само као основна класа других класа. 'Абстрактни' модификатор се користи за прављење класе апстрактно. Апстрактни модификатор указује на то да постоји нека недостајућа имплементација коју треба имплементирати у класу изведену из ње. Апстрактна класа може имати апстрактне и не-апстрактне чланове. Апстрактна класа би требала имати барем једну апстрактну методу, јер у противном нема користи да се класа декларише као "апстрактна".

Пример апстрактне класе у Ц #:
Као што је приказано у горњем примеру, апстрактна метода 'Ареа' унутар МиЦирцле класе превладава у изведеној класи МиАреа.

Интерфејс

Интерфејс садржи само декларацију чланова укључујући методе, својства, догађаје или индексере. Не садржи имплементацију ових чланова. Класа или структура имплементира интерфејс, мора да пружи дефиницију метода декларисаних у интерфејсу. То значи да интерфејс пружа стандардну структуру коју изведена класа треба да следи.

Пример интерфејса у Ц #:
Као што је приказано у горњем примјеру, сучеље МиДата има двије методе декларације гетдата () и сховдата (). Клас НамеДата који имплементира ово сучеље требао би дати дефиницију метода декларисаних у МиДата интерфејсу.

Разлика између класе апстракције и сучеља

  1. Апстрактна класа може имати и апстрактне и не-апстрактне чланове. Али, у интерфејсу, сви чланови су имплицитно апстрактни и морају бити прегласани у изведеној класи.
  2. Класа може наследити неколико интерфејса, али само једну апстрактну класу.
  3. Апстрактна класа може садржавати методе са или са дефиницијом. Али, интерфејс може да садржи само потпис метода.
  4. Апстрактна класа се у потпуности, дјеломично или уопће не може имплементирати, али интерфејс би требао бити у потпуности имплементиран, тј. Сви чланови морају бити дефинирани у изведеној класи.
  5. Интерфејс не може садржавати модификаторе приступа, али апстрактна класа може га имати за функције, својства или догађаје.