интерфейс vs abstract class

john2007
Дата: 01.07.2014 00:28:16
Есть несколько реализаций одного и того же (переводчик английских фраз).
Нужно, чтобы они реализовывали один и тот же набор методов и свойств (метод translate).

Базового функционала не реализуется (и не предполагается).

Что лучше выбрать интерфейс или abstract class и почему?

Прочитал последнюю дискуссию на эту тему, но ответа не нашел, слишком она абстрактная.
http://www.sql.ru/forum/1095266-1/c-interfeysy-sposoby-primeneniya
Изопропил
Дата: 01.07.2014 00:34:34
john2007
Базового функционала не реализуется (и не предполагается).

здесь и ответ
john2007
Дата: 01.07.2014 00:41:07
Изопропил
john2007
Базового функционала не реализуется (и не предполагается).

здесь и ответ


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

Но ответ может быть - значения не имеет - можно выбрать или интерфейс или абстрактный класс.

А если все же интерфейс, то почему, есть в данном случае преимущества перед абстрактным классом?
Изопропил
Дата: 01.07.2014 07:23:53
john2007
А если все же интерфейс, то почему, есть в данном случае преимущества перед абстрактным классом?

иерархия классов может пригодиться для других целей
john2007
Дата: 01.07.2014 08:30:35
Изопропил
john2007
А если все же интерфейс, то почему, есть в данном случае преимущества перед абстрактным классом?

иерархия классов может пригодиться для других целей


Согласен!
netivan
Дата: 01.07.2014 09:09:46
Изопропил
john2007
А если все же интерфейс, то почему, есть в данном случае преимущества перед абстрактным классом?

иерархия классов может пригодиться для других целей

а кто мешает сделать интерфейс и от него абстрактный класс реализовать?
hVostt
Дата: 01.07.2014 09:35:55
john2007
Намек на интерфейс. Но он основывается на том, что это это свойство абстрактного класса использовать не удастся.

Но ответ может быть - значения не имеет - можно выбрать или интерфейс или абстрактный класс.

А если все же интерфейс, то почему, есть в данном случае преимущества перед абстрактным классом?


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

Абстрактный класс подойдёт, если необходимо:

1. предоставить часть базовой реализации
2. ограничить методы областью применения (модификаторы доступа)
3. планируется (есть риск) добавлять новые общие методы

В вообще можно совмещать:

IPet и PetBase, и сильно не париться по этому поводу
Arm79
Дата: 01.07.2014 10:19:51
Прочитав название темы я, честно говоря, решил, что свеном опять обвиняет архитекторов и разработчиков .Net в некорректной реализации интерфейсов и абстрактных классов...
Antonariy
Дата: 01.07.2014 12:44:11
netivan
Изопропил
пропущено...

иерархия классов может пригодиться для других целей

а кто мешает сделать интерфейс и от него абстрактный класс реализовать?
а зачем?