Я знаком с абстрактными классами, интерфейсами и т. П.Зачем определять абстрактные классы C# без абстрактных членов
Что мне непонятно, почему кто-нибудь создаст абстрактный класс C#, у которого нет абстрактных элементов? (компилятор C# позволяет это).
Пример:
public abstract class House
{
public void OpenDoor()
{
Console.WriteLine("Door opens");
}
}
Я думаю, что в компиляторе потребуется больше кода, чтобы определить эту проблему и предотвратить ее , Таким образом, вопрос может быть отменен - почему компилятор должен быть специально разработан для предотвращения этого? –
Действительно действительный вопрос. И, на мой взгляд, это признак плохого дизайна. Обычно я делал это в своем прошлом, и в конце концов мне нужно отметить 'OpenDoor' как виртуальную, потому что мои производные дома нуждаются в конкретном методе для этого. Один из вариантов заключается в том, чтобы добавить еще один метод «OnOpenDoor», который является виртуальным защищенным, что позволяет детям иметь определенную реализацию, контролируя «абсолютную» реализацию из базового класса. – Fendy