Модификаторы
Одним из важных принципов объектно-ориентированного подхода к программированию является инкапсуляция данных: считается, что внутреннее устройство класса и конкретная реализация его методов должны быть неизвестны внешним потребителям. Для выражения различных уровней доступности элементов программы в C# существует обширный набор модификаторов, позволяющий утверждать, что на данный момент C# обладает наиболее развитыми средствами поддержки инкапсуляции. Например, поля могут быть описаны следующим образом:
- public (данный элемент класса доступен всем внешним потребителям)
- protected (к такому элементу класса могут обращаться только классы, унаследованные от данного)
- private (элемент недоступен за пределами описания класса, т.е. недоступен даже потомкам данного класса; этот модификатор ставится по умолчанию)
- internal (элемент доступен только для классов, определенных в той же сборке, что и данный класс)
Кроме того, существуют модификаторы, изменяющие поведение элементов класса:
- const (свидетельствует, что данная переменная не может быть изменена)
- event (указывает, что данный элемент описывает событие; о событиях см. ниже)
- extern (обычно описывает метод с внешней реализацией, чаще всего, импортированный из Win32)
- override (используется в случае новой реализации виртуального метода)
- readonly (описывает переменные, которые могут получить значение только при самом описании или в конструкторе класса)
- static (указывает, что данный элемент принадлежит типу объекта, а не конкретному экземпляру)
- virtual (описывает метод, который может быть переопределен в потомках класса)
Наконец, класс в целом может иметь следующие дополнительные модификаторы:
- abstract (обозначает, что данный класс не может быть использован самостоятельно, а является только базой для классов-потомков)
- sealed (от таких классов нельзя наследовать; кстати, по очевидным соображениям комбинация модификаторов abstract sealed запрещена)
Содержание раздела