Так что я хотел унаследовать от sealed class
в csharp и сгорел. Нет никакого способа распечатать его, если у вас нет доступа к источнику.
Тогда это заставило меня задуматься «почему sealed
вообще существует?». 4 месяца назад. Я не мог понять это, несмотря на чтение многих вещей об этом, таких как:
- Желания Джона Скита « классы были закрыты по умолчанию в .NET ».
- Предпочитаете композицию наследству?
- «Вы не должны запечатывать все классы (...)»
- Как вы издеваетесь над Запечатанным классом?
Я пытался переварить все это с тех пор, но это слишком много для меня. В конце концов, вчера я попробовал это снова. Я снова просмотрел их все, плюс еще несколько:
- Почему класс должен быть чем-то отличным от "абстрактного" или "окончательного / запечатанного"?
- За более чем 15-летний опыт программирования я впервые услышал о SOLID из ответа на вопрос, который уже был связан, и я, очевидно, не читал его всего 4 месяца назад.
Наконец, после долгих размышлений я решил серьезно отредактировать исходный вопрос на основе нового названия.
Старый вопрос был слишком широким и субъективным. В основном спрашивал:
- В старом названии: одна веская причина использовать запечатанный
- В теле: Как правильно модифицировать запечатанный класс? Забыть о наследовании? Использовать композицию?
Но теперь, понимая (что я не сделал вчера), что все sealed
делает, это предотвращает наследование , и мы можем и должны действительно использовать композицию вместо наследования , я понял, что мне нужны были практические примеры.
Я предполагаю, что мой вопрос здесь (и на самом деле всегда был) именно то, что мистер Миндор предложил мне в чате : как разработка наследования может привести к дополнительным затратам?