Это означает, что вы можете добавлять новые члены (методы, свойства, поля, ...) в абстрактные классы, которые не приводят к изменениям в производных классах - если члены не абстрактны, это правильно , Например, рассмотрим следующий пример:
internal abstract class MyBaseClass
{
public abstract void DoSomething();
// This method can also be added later without having an effect on the derived classes
public virtual void DoSomethingElse()
{
// Do something else...
}
}
internal class MyDerivedClass : MyBaseClass
{
public override void DoSomething()
{
// Do something...
}
}
В этом случае производный класс должен реализовать метод DoSomething
. Но позже вы можете добавить не абстрактные функции в абстрактный базовый класс. Однако, как только вы добавляете еще один абстрактный элемент в базовый класс, это также влияет на все не абстрактные производные классы, потому что они должны внедрять новые члены.
Интерфейс, с другой стороны, не определяет конкретные реализации вообще, а содержит только абстрактную подпись, которую должны предоставить все разработчики. Поэтому, если вы добавляете новый элемент (метод, свойство) в интерфейс, он заставляет всех разработчиков интерфейса также обеспечивать реализацию новых членов.
Представьте, что вы добавляете новый метод в интерфейс. Все разработчики должны быть обновлены, чтобы обеспечить их реализацию. И исходный, и двоичный. Теперь добавьте новый метод в абстрактный базовый класс. Ничего не нужно будет изменять (... более или менее ...) в производных классах. _Without destroying_ означает, что в этом случае абстрактный базовый класс будет поддерживать как исходную, так и двоичную совместимость с существующими кодами/сборками, а интерфейс будет разорвать (уничтожить ...) оба. –
Я думаю, это означает, что если вы используете интерфейс, все дочерние классы должны реализовать новый метод в интерфейсе. Если вы используете абстрактный класс, ваши дочерние классы могут компилироваться без каких-либо изменений, потому что не нужно переопределять абстрактный метод или автоматически наследовать метод, если он не абстрактный. – Sebi
@Adriano Правильный ответ ([Нет комментариев] (http://stackoverflow.com/help/privileges/comment) :-)) – pravprab