Определение класса может опционально содержать последовательность модификаторов:
class-modifiers:
class-modifier
class-modifiers class-modifier
class-modifier:
Public
Friend
Abstract
Final
Появление одного и того же модификатора в определении класса приводит к ошибке компиляции. Модификаторы Public и Friend определяют область видимости класса. Модификаторы Abstract и Final описаны ниже.
Модификатор Abstract указывает на то, что класс является незавершенным (неполным) и может быть использован только в качестве базового для других. Абстрактные классы отличаются от классов не являющихся абстрактными следующим образом:
Не может быть явно создан экземпляр абстрактного класса, использование оператора New совместно с абстрактным классом приводит к ошибке компиляции. Возможно определение переменных и значений, чей тип во время компиляции будет представлен абстрактным классом, однако во время выполнения такие переменные будут либо пустыми (Null), либо содержать ссылки на экземпляры классов, производных от данного и не являющихся абстрактными.
Для абстрактного класса допустимо (но не требуется) наличие абстрактных членов.
Абстрактный класс не может быть завершенным.
Класс, не являющийся абстрактным и производный от абстрактного, должен содержать реализации всех унаследованных абстрактных членов.
Модификатор Final блокирует создание классов, производных от данного. При указании завершенного класса в качестве базового для другого возникает ошибка компиляции.
Модификатор Final обычно используется для запрещения нежелательного наследования, однако он также делает возможным некоторые оптимизации при выполнении кода. Например, возможно все вызовы виртуальных методов преобразовать в обычные, т.к. известно, что у данного класса не может быть наследников.
//Класс, доступный во всей сборке, а также в сборках
//где данная сборка подключена по ссылке
Public Class Class1
End Class;
//Класс, доступный во всей сборке
Friend Class Class2
End Class;
//Абстрактный класс
Abstract Class Class3
End Class;
//Класс, унаследованный от абстрактного
Class Class4: Class3
End Class;
//Завершенный класс, от которого нельзя наследовать
Final Class Class5
End Class;
См.также: