Как я могу предотвратить наследование класса в C #?
-
03-07-2019 - |
Вопрос
В Java я мог бы сделать это с помощью ключевого слова «final».Я не вижу «финала» в С#.Есть ли замена?
Решение
Вы ищете sealed
ключевое слово.Он делает именно то, что final
ключевое слово в Java делает.Попытки наследования приведут к ошибке компиляции.
Другие советы
Также имейте в виду, что фраза «Я не думаю, что кому-либо когда-либо понадобится наследовать это» не является веской причиной для использования «запечатанного».Если у вас нет особой необходимости гарантировать использование конкретной реализации, оставьте класс незапечатанным.
Как уже советовал Джоэл, вы можете использовать sealed
вместо final
в С#.
http://en.csharp-online.net/CSharp_FAQ:_Does_CSharp_support_final_classes
А sealed
модификатор будет делать то, что final
делает на Java.
Кроме того, хотя это, вероятно, не то, что вы ищете в данной ситуации, пометка класса как static
также предотвращает его наследование (оно запечатывается «за кулисами»).
А sealed
Ключевое слово будет работать, но вы все равно можете получить его из класса, используя отражение IIRC.