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

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 85 86 87 88 89 90 < 91 > 92 93 94 95 96 97 .. 404 >> Следующая


Например, мы можем добавить в класс муОааа интерфейс:

public class UyClass : IMyInterface {

// члены класса

>

Все члены, являющиеся интерфейсами, должны иметь реализацию с любом классе, поддерживающем данный интерфейс, хотя, конечно, всегда существует возможность реализовать “пустой" интерфейс (без какого бы то ни было функционального кода), еслн от данного члена не требуется выполнения каких-либо действий.

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

public class МуОааа : 1Муinterface, МуВаае

С

// члены класса

)

Правильный способ задать н базовый класс, и интерфейс следующий:

public claes KyClasa : MyBase, IMylnterface (

// члены класса

>
Определение классов

183

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

public class HyClaes s MyBase, iMyInterface, IMySecondInterface

<

II члены класса '

>

Для того чтобы вы смогли быстро освежить свою память, ниже приводится таблица допустимых в определениях классов комбинаций модификаторов доступа:

Модификатор Значенне
Отсутствует либо internal Класс доступен только в рамках текущего проекта
public Класс доступен отовсюду
abstract или internal abstract Класс доступен только в рамках текущего проекта, не допускает создания экземпляров, может только наследоваться
public abstract Класс доступен отовсюду, не допускает создания экземпляров, может только наследоваться
sealed или internal sealed Класс доступен только в рамках текущего проекта, не может наследоваться, допускает только создание экземпляров
public sealed Класс доступен отовсюду, не может наследоваться, допускает только создание экземпляров

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

Интерфейсы объявляются тем же способом, что н классы, только вместо ключевого слова class используется ключевое слово interface. Например:

interface IMyInterface

(

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

J

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

public interface iMylnterface

(

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

)

Дня интерфейсов ключевые слова abstract и sealed использовать нельзя, так как ни один модификатор для интерфейсов не имеет смысла (у них отсутствует реализация, следовательно, для них не могут создаваться экземпляры в явном виде).

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

. public interface myinterface : ГЦуваееХпterface, l4yBAeeInterface2

I

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

)
184

Глава 9

Интерфейсы, как и классы, наследуются от System.object. Этот механизм допускает полиморфизм интерфейсов. Однако, как отмечалось ранее, нельзя создать экземпляр интерфейса таким же способом, как и экземпляр класса.

Давайте обратимся к некоторым примерам определения классов, которые приводятся вместе с кодом, п котором они используются.

Практикум: определение классов

1. Создайте новое консольное приложение с именем ch09Ex0i В директории C:\BegCSharp\Chapter9.

2. Измените код в classl.cs следующим образом:

namespace Ch09Ex01 (

public abstract class MyBase (

)

internal claee MyClass : MyBase (

>

public interface IMyBaeelnterface ¦

<

)

internal interface IMyBaBeInterface2 (

>

internal interface IMylnterface : IMyBaeelnterface, IMyBaseInterface2 t

}

internal sealed class MyComp' xClaes * Myclase, IHyInterface t

>

III <smmary>

III Summary description for C-laaal.

Ill </summary> class Classl (

static void Main(string[] args)

(

KyComplexClass myObj 1 new MyComplexClaee (); Console,WriteLine(myObj.ToString()t;

}

3. Выполните проект:

.'C:\etgCSharp\Ch apterit\ch(J9?K01 \ОсЬид\?Ы19?н01.еи p

Liflif key to cnncinue
Определение классов

185

«interface» !МуВы*1п tmrft с*

System.Object

«interface»

IMyRtt»lnt*itct2

ClMtl

-Main(ln args: stringQ)

МуВам

MyClaes

«Interface» MyComplexClau
Utytntofae*


iMylnteifac*

В программе вызывается метод ToString о экземпляром класса ijycompiaxciass:

MyComplexClaas myObj = new MyComplexClass( Console.WriteLine (myObj .ToStringO );

Как это работает

В данном проекте описаны классы и интерфейсы, обладающие иерархией наследования, показанной на рисунке слева. Мы включили сюда ciaesl, так как его описание аналогично описанию остальных наших классов, хотя он и не вхоДнт в основную иерархию классов. Метод MainO, находящийся в этом классе, является точкой входа в приложение; этот момент обсуждался раньше.

MyBase И IMyBaselnterface определены как общие, поэтому онн доступны нз других проектов. Остальные классы и интерфейсы являются внутренними н доступны только в рамках настоящего проекта, объекта myObj, который является

) ;
Предыдущая << 1 .. 85 86 87 88 89 90 < 91 > 92 93 94 95 96 97 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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