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

С# - Ватсон К.

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

> ¦

)

m

public Class MyDerivedciass : MyBaseClass (

public override void DoSomething о (

// Реализация в производном классе, расиирясная реализацию в базовом классе base.DoSomething()j // Дополнительная реализация в производном классе

J '

В представленном коде выполняется версия DoSomething)), содержащаяся в классе MyBaseClass (базовом по отношению к MyDerivedciass), из которой вызывается версия DoSomething (), содержащаяся внутри класса MyDerivedciass.

Поскольку ключевое слово base работает с экземплярами объектов, то будет ошибкой использовать его внутри статического члена.

Ключевое слово this

Кроме ключевого слова base, в предыдущей главе мы также использовали ключевое слово this. Так же, как и base, this может применяться внутри членов класса, и так же, как и base, оно относится к экземпляру объекта. Экземпляр объекта, на который указывает this, является текущим экземпляром объекта (отсюда следует, что это ключевое слово нельзя использовать в статических членах, поскольку они не являются составной частью экземпляра объекта).

Наиболее ценной функцией ключевого слова this является возможность передавать некоторому методу ссылку на текущий экземпляр объекта, напрнмер:

public void doSomethingO ( ¦

. MyTargetClass nyObj « new MyTargetClass [ ] i

rayObj.doSome th ingWi t h < t hi a);

} и . : ¦ .

В данном примере класс MyTargetClass, экземпляр которого создается, обладает методом DoSomethingwitho. Ему передается единственный параметр, имеющий тип, совместимый с тем классом, в котором содержится этот метод. Тип параметра может совпадать с типом данного класса, с типом класса, наследником которого является данный класс, может являться интерфейсом, реализованном в данном классе, илн же (естественно) быть типом System.Object.

Вложенные определения типов

Помимо описания типов как классов в пространствах имен их можно описывать внутри других классов. В таком случае появляется возможность использовать в определениях весь спектр модификаторов доступности, а не только public и internal, а также применять ключевое слово new для перевода определения типа, наследуемого от базового класса, в скрытое состояние.
Определение членов классов

217

В следующем коде, кроме класса Myciaaa, описывается также вложенный класс С именем myNestedClass:

public class MyClass

{ '

public class myNeetedClase {

public int nestedClasePield; -

)

Если потребуется создать экземпляр класса myNestedciaes откуда-нибудь извне класса Hyciaas, то его имя должно квалифицироваться:

MyClass.myNestedClaea nvObj = пен MyClaeB.nvtfestedClaesO j

Однако вполне возможно, что мы окажемся не в состоянии выполнить такие действия, еслн вложенный класс объявлен как частный или обладает каким-либо другим уровнем доступности, несовместимым с кодом в той точке, d которой осуществляется попытка создания соответствующего экземпляра.

Основной причиной этого является необходимость описания классов, которые являются частными по отношению к содержащему их классу, так что никакой другой код в данном пространстве имен не будет иметь к ним доступа.

Реализация интерфейсов

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

interface IMylnterface {

// члены интерфейса

)

Члены интерфейса определяются так же, как н члены класса, за исключением нескольких существенных отличий:

? Не допускается использование никаких модификаторов доступности (public, private, protected и internal) — все члены интерфейса неявно общие.

? Члены интерфейса не могут содержать тела программы.

? Интерфейсы не могут описывать члены в виде полей.

? Прн описании членов интерфейса не могут использоваться ключевые слова static, virtual, abstract И sealed.

? Члены описания типов не допускаются.

Существует, однако, возможность использовать при описании членов ключевое слово new в тех случаях, когда требуется перевести в скрытое состояние члены, наследуемые от базовых интерфейсов. Например:

interface IMyBaseInterface (

void DoSomething{)i

}
218 Глава 10

interface IMyDerivedlnterface i IMy&aeeInterface (

new void DoSomething[);

)

Это работает точно таким же образом, как и перевод в скрытое состояние наследуемых членов класса,

В свойствах, определяемых в интерфейсах, задается, какие блоки доступа — e«t и/нли set — допустимы для данного свойства; например:

interface IMylnterface

{ _ _ . _ ^ int Myint ,

(

eeti

)

)

В данном случае свойство Myint типа int обладает обоими средствами доступа — и set, и set. Любое нз ннх может быть опущено для свойства, доступ к которому является более ограниченным.

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

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

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

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

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