|
ООП С Sharp - Модификаторы доступа
Единственное поле класса Authenticator, password, хранит текущий пароль (изначально, при создании объекта Authenticator — пустую строку) и помечено ключевым словом private. Это значит, что оно не видимо вне класса, а видимо только коду, являющемуся частью Authenticator. Пометка поля или метода как private гарантирует, что это поле или метод будут частью внутреннего устройства класса, в противоположность внешнему интерфейсу. Преимущество этого подхода состоит в том, что если вы решите изменить внутреннее устройство (например, хранить password не в виде строки, а воспользоваться каким-то другим типом данных), то вы просто внесете необходимые изменения, не разрушая код, находящийся вне определения класса Authenticator, — ничто, находящееся вне класса, не может получить доступ к этому полю.
Любой код, использующий класс Authenticator, имеет доступ только к методам, помеченным ключевым словом public, в данном случае — к методам IsPasswordCorrect() и ChangePassword(). Оба они реализованы таким образом, что ничего не может быть сделано (кроме возврата true или false), пока вызывающий код не передаст корректный пароль, что и следует ожидать от программного обеспечения поддержки безопасности. Реализация этих функций обращается к полю password, и это нормально, поскольку этот код является частью кода самого класса Authenticator. Отметим, что эти общедоступные (public) функции в совокупности представляют интерфейс с внешним миром (другими словами, для любого кода, использующего класс Authenticator) и определяют то, что делает класс Authenticator, и что видимо для внешнего мира.
private и public — не единственные модификаторы доступа, с помощью которых можно определить, какому коду разрешено знать о существовании члена. Далее в настоящем приложении мы поговорим о модификаторе protected, который обеспечивает доступность члена данному классу и определенным связанным с ним классам. C# также позволяет объявлять члены как internal и protected internal, что ограничивает доступ к ним из другого кода только данной сборкой.
|