Стивен
Только один, самый простой и очевидный ... Интерфейс допускает альтернативные реализации; если «опубликованный общеизвестный тип» является абстрактным классом, вы не сможете впоследствии предоставить любые альтернативы ... Поэтому недостатком является то, что вы ограничиваете свои будущие возможности; положительным моментом является то, что (в зависимости от того, сколько существует наследников) вы можете сэкономить много кода.
Если вы действительно уверены, что других допустимых реализаций нет, тогда переходите к абстрактному классу. Если нет, то придерживайтесь интерфейса.
И я полагаю, вы МОЖЕТЕ сделать и то, и другое, и я думаю, это дало бы вам самое лучшее из обоих миров.
Приветствия. Кит.
PS: manojlds, конечно, прав ... и тааак гораздо более суровым; -)