|
Программирование >> Программирование с использованием ajax
□ internal (внутренний) - делает челны доступными только из кода проекта (сборки), внутри которого они определяются. □ protected (защищенный) - делает члены доступными только из того кода, который является частью либо данного класса, либо класса, производного от него. Два последних ключевых слова могут комбинироваться, т.е. также существуют и члены protected internal. Такие члены доступны только из классов, которые являются производными от кода, содержащегося внутри проекта (а точнее - внутри сборки). Поля, методы и свойства могут также объявляться с применением ключевого слова static и в таком случае являются статическими членами, принадлежащими классу, а не экземплярам объектов, как говорилось в главе 8. Определение полей Поля определяются с применением стандартного формата объявления переменных (и, при желании, инициализации), а также перечисленных выше модификаторов: class MyClass { public int Mylnt; Общедоступные (public) поля в .NETFramework именуются в соответствие с форматом PascalCasing, а не camelCasing, и здесь тоже применяется именно такая схема именования. Поэтому имя поля в приведенном примере и выглядит как Mylnt, а пе mylnt. Такая схема именования не является обязательной, но ее применение действительно имеет смысл. Что касается приватных (private) полей, то для их именования никаких особых рекомендаций нет, хотя обычно принято применять для них все-таки схему camlCasing. При определении полей также может использоваться ключевое слово readonly, означающее, что данному полю значение может присваиваться только либо во время выполнения кода конструктора, либо посредством операции начального присваивания: class MyClass { public readonly int Mylnt = 17 ; Как уже упоминалось во вводном разделе этой главы, поля могут объявляться статическими с использованием ключевого слова static: class MyClass { public static int Mylnt; К статическим полям доступ осуществляется через класс, в котором они определяются (в предыдущем примере таковым является класс MyClass .Mylnt), а не через экземпляры объектов этого класса. Для создания константных значений служит ключевое слово const. Члены const являются статическими по определению, поэтому в их случае применять модификатор static не нужно (на самом деле это будет считаться ошибкой). Определение методов При определении методов применяется стандартный формат определения функций, но также указывается уровень доступности и, при желании, модификаторы static, как показано в следующем примере: class MyClass { public string GetString () { return Here is a string. ; (Вот строка) Подобно полям, общедоступные методы в .NET Framework именуются в соответствие со схемой PascalCasing. Запомните, что указание ключевого слова static делает метод доступным только через класс, в котором он определяется, но не через экземпляры объектов этого класса. При определении методов могут еще использоваться и следующие ключевые слова. а virtual (виртуальный) - указывает, что данный метод может переопределяться. □ abstract (абстрактный) - указывает, что данный метод должен обязательно переопределяться в не абстрактных производных классах (может использоваться только в абстрактных классах). □ override (переопределенный) - указывает, что данный метод переопределяет какой-то метод, определенный в базовом классе. □ extern (внешний) - указывает, что определение данного метода находится в каком-то другом месте. Ниже приведен пример переопределения метода: public class MyBaseClass { public virtual void DoSomething () { Базовая реализация. public class MyDerivedClass : MyBaseClass { public override void DoSomething () { Реализация в производном классе, переопределяющая базовую реализацию. Вместе с ключевым словом override может также использоваться и ключевое слово sealed (герметизированный), указывающее, что в данный метод больше не могут вноситься изменения ни в каких производных классах, т.е. метод не может переопределяться в производных классах. Ниже приведен пример: public class MyDerivedClass : MyBaseClass { public override sealed void DoSomething () Реализация в производном классе, переопределяющая базовую реализацию. Ключевое слово extern позволяет предоставлять внешнюю по отношению к проекту реализацию метода, но эта тема является более сложной и здесь не рассматривается. Определение свойств Свойства определяются сходным с полями образом, но имеют больше особенностей. В частности, как уже упоминалось ранее, свойства являются более сложными, чем поля, поскольку могут выполнять дополнительную обработку перед изменением состояния - и, на самом деле, могут вообще не изменять состояния. Это получается благодаря тому, что они обладают двумя подобными функциям блоками, один из которых отвечает за получение значения свойства, а второй - за установку значения свойства. Эти блоки, также называемые средствами доступа (accessors), определяются с помощью, соответственно, ключевого слова get и ключевого слова set и могут применяться для управления уровнем доступа к свойству. Можно опускать тот или иной из них и тем самым создавать свойства, доступные только для записи или только для чтения (в частности, пропуск блока get позволяет обеспечивать доступ только для записи, а пропуск блока set - доступ только для чтения). Разумеется, это касается только внешнего кода, поскольку у кода внутри класса будет доступ к тем же данным, что и у этих блоков кода. Еще можно использовать со средствами доступа модификаторы доступности, т.е. делать, например, блок get общедоступным (public), а блок set - защищенным (protected). Для получения действительного свойства нужно обязательно включать хотя бы один из этих блоков (очевидно, что от свойства, которое нельзя ни считывать, не изменять, было бы мало толку). Базовая структура свойства состоит из стандартного ключевого слова, указывающего на уровень доступа (такого как public, private и т.д.), за которым идет имя типа, имя свойства и один или оба блока get и set, содержащие код обработки свойства: public int MylntProp { get { Код для получения значения свойства. set { Код для установки значения свойства. Для именования общедоступных свойств в .NET тоже применяется схема PascalCasing, а не camelCasing, и потому здесь, как для полей и методов, используется именно она. Первая строка в определении свойства как раз и является тем небольшим фрагментом, который очень похож на определение поля. Отличие состоит в том, что в конце строки находится не точка с запятой, а блок кода, содержащий вложенные блоки get и set. В блоках get должно обязательно присутствовать возвращаемое значение типа свойства. Простые свойства часто ассоциируются с одним приватным полем, управляя доступом к нему, в случае чего блок get может возвращать значение поля и напрямую: Поле, используемое свойством, private int mylnt; Свойство. public int MylntProp
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |