Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 101

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 95 96 97 98 99 100 < 101 > 102 103 104 105 106 107 .. 404 >> Следующая


Заметьте, что если прн описании метода использовано ключевое слово static, то этот метод будет доступен только через класс, но не через экземпляр объекта. При определении метода также можно использовать следующие ключевые слова:

? virtual (виртуальный) — метод может быть переопределен.

? abstract (абстрактный) — метод должен быть переопределен (допускается только в абстрактных классах).

? override (переопределить) — метод переопределяет метод базового класса (это ключевое слово должно использоваться в том случае, если метод переопределяется).

? extern (внешний) — определение метода находится где-либо в другом месте.

Следующий пример демонстрирует переопределение метода: public class MyBaseClaes {

public virtual void DoSomethins <)

{

// Вазовая реализация

}

)

public class MyDerivedClaas : МуБлаеС1аве (

public override void DoSomething ()

{

// Реализация метода в производном классе,

И она переопред мет базовую реализации > .

J

При использовании модификатора override может применяться также модификатор sealed, который указывает на то, что никаких дальнейших модификации этого метода в производных классах не допускается, т. е, метод не может переопределяться в производных классах. Например:

public class MyDerivedCiass : MyBaseClass (

. public override sealed void DoSomethingO

(

И Реализация метода в производном классе,

II она переопределяет базовул реализации

)

)

Использование модификатора extern позволяет использовать реализацию метода, внешнюю по отношению к данному проекту. Это сложная тема, и мы здесь не будем в нее углубляться.

Определение свойств

Свойства определяются аналогично полям, но с ними все оказывается не так просто. Как обсуждалось ранее, свойства сложнее полей, поскольку они допускают дополнительную обработку перед изменением своего состояния. Это достигается
Определение членов классов

207

за счет того, что они обладают двумя блоками, напоминающими функции, один из которых предназначается для получения значения свойства, а второй — для задания значения свойства.

Оба этих блока, определяемых посредством ключевых слов eet (получи) н eet (установи), могут использоваться для управления уровнем доступа к данному свойству. Существует возможность опустить тот или иной блок для создания свойства, которое будет использоваться в режиме “только чтение” или "только запись” (причем отсутствие блока eet определяет "только запись", а отсутствие блока set определяет режим доступа “только чтение"). Это все, естественно, применимо только ко внешнему коду, поскольку любой код, находящийся внутри класса, будет иметь доступ ко всем тем данным, к которым имеет доступ код, находящийся в этнх блоках. Для того чтобы получить корректное свойство, необходимо включить в его описание хотя бы один нз этнх двух блоков (свойство, которое нельзя ни считать, ни изменить, едва ли может принести хоть какую-ннбудь пользу).

Основная структура свойства включает стандартное ключевое слово — модификатор доступа (public, private и т. д.), за которым следует имя тнпа, имя свойства и одни или оба блока set и get, в которых содержится код обработки свойства. Например:

public Int Ну IncProp (

get ¦ ¦ .

t

11 Код для получения значения свойства .

)

set -

1 •

// Иод доя задания значения свойства

)

Имена общих свойств в .NET Framework также строятся на основе регистров PascalCasing, а не camelCasing, и в этой книге мы будем использовать для них — так же, как для полей и методов — именно эту систему.

Первая строка этого определения очень напоминает определение поля. Отличие заключается в том, что в конце строки отсутствует точка с запятой; вместо нее там размещаются вложенные блокн set и get.

Блоки get должны обладать возвращаемым значением, имеющим тот же тнп, что и само свойство. Простые свойства очень часто привязывают к единственному частному полю, которое управляет доступом к этому свойству; в этом случае блок get может возвращать значенне этого поля напрямую. Например:

// Поле, используемое свойством private int myint;

// Свойство

public int MylntProp

С

get

return myint j

>

set

<

// Код для задания свойства

)
208 Глава 10

Заметьте, что внешний код не будет иметь непосредственного доступа к полю myint из-за его уровня доступа (оно описано как частное). Напротив, такой код должен использовать свойство для того, чтобы получить доступ к полю.

Функция set присваивает полю значение аналогичным образом. В этом случае можно воспользоваться ключевым словом value, чтобы сослаться на значение, полученное от пользователя:

П Поле, используемое свойством private int nylntj

it Свойство public int HylntProp {

get

<

return nylntj

>

set

I

my Int ¦ value; -

)

>

Значение value имеет такой же тип, что и свойство, поэтому, если используется тот же тип, что н тип поля, не приходится беспокоиться о приведении типов.

Это простое свойство не только защищает поле myint от непосредственного доступа. Истинная мощь свойств проявляется, когда требуется несколько больший контроль над происходящим. Например, мы можем реализовать блок set следующим образом:
Предыдущая << 1 .. 95 96 97 98 99 100 < 101 > 102 103 104 105 106 107 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.