Абстрактный класс или интерфейс. Какой способ правильный?

Существует два способа выбора между абстрактным классом или интерфейсом. Решение Microsoft и решение Oracle:


Microsoft, руководство по проектированию:

Используйте абстрактные (MustInherit в Visual Basic) классы вместо интерфейсов, чтобы отделить контракт от реализаций.

http://msdn.microsoft.com/en-us/library/ms229013.aspx


Oracle, The Java Tutorials:

Если абстрактный класс содержит только объявления абстрактных методов, вместо этого он должен быть объявлен как интерфейс.

http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html


Мой вопрос в том, какой способ правильный? Решение Microsoft или Oracle? Обратите внимание, что я думаю, что выбор между абстрактным классом или интерфейсом не должен зависеть от языка программирования (Java или C#).

8
задан bryanmac 11 February 2012 в 20:09
поделиться