Основы VB.NET Урок 31. Классы без потомков или запрещение наследования
Если мы специально не позаботимся, то от любого нашего класса можно произвести класс-потомок. Если мы хотим этого избежать, то мы должны объявить класс с ключевым словом NotInheritable. Тем самым мы определим наш класс как класс без потомков. И даже если очень захочется, то все равно от такого класса не удастся образовать класс-потомок.
Вот пример:
...
NotInheritable Class Class1
'Методы, переменные, свойства класса Class1
End Class
Class Class2
Inherits Class1 'Ошибка!!!
'Методы, переменные, свойства класса Class2
End Class
...
Зачем нужны классы без потомков? Вернее зачем компилятору сообщать о том, что некий класс не может иметь потомков? Причин тут несколько. Одна из причин - это оптимизация кода, связанная с виртуальными функциями. Другая причина - это безопасность. Класс-потомок в принципе может получить доступ к некотрым частям класса-предка, к которым обычным способом (не через класс-потомок) доступа нет, так что запрещая наследование, мы ставим дополнительную защиту нашему классу.
Классы без потомков стоят на одном конце иерархии классов. На другом конце стоит абстрактные классы (см. урок 14), которые как раз и используются для образования от них классов-потомков.
|