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

С# - Ватсон К.

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

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

В предыдущей главе вы познакомились с возможностями объектно-ориентированного программирования (ООП). В этой главе мы перейдем от теории к практике и рассмотрим определение классов в С#.

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

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

Остальная часть главы будет посвящена изучению различных тем, могущих оказаться полезными прн определении классов в С#, среди которых:

? Класс System.Object

? Полезные инструменты, предоставляемые Visual Studio.NET (VS)

? Библиотеки классов

? Сравнение интерфейсов и абстрактных классов *'

? Структурные типы

? Копирование объектов

Итак, мы начнем с того, что подробно ознакомимся с основами.

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

В языке C# для описания классов используется ключевое слово class. При этом необходимо задействовать следующую основную конструкцию:

class myClass

(

It 4J ш класса

)

Этот код определяет класс с именем myciasa. После того как мы определили класс, мы вольны создавать экземпляры этого класса в нашем проекте везде, где имеется доступ к этому определению. По умолчанию классы определяются как
Определение классов

181

internal (внутренние), что означает, что доступ к ним будет иметь только код текущего проекта. Мы можем указать это явно, воспользовавшись ключевым словом определения доступа internal (хотя н не обязаны этого делать):

internal clue MyClus . ЯМ

(

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

)

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

public class MyClase

(

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

> (

Обратите внимание, что классы, которые объявляются самостоятельно, не могут быть частными или защищенными. Соответствующие модификаторы — private и protected — можно использовать только для описания классов, являющихся членами других классов. Их мы рассмотрим в следующей главе.

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

public abstract 4^}ала MyClass

(

II члены класса, среди которых могут быть абстрактные

>

В данном случае Hyciass является общим абстрактным классом, хотя также возможны и внутренние абстрактные классы.

, Изолированные классы определяются следующим образом:

public sealed.class MyClass

(

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

>

Так же, как абстрактные классы, изолированные классы могут быть общими или внутренними.

В определении класса может также задаваться и наследование. Для этого следует после имени класса поместить двоеточие, за которым должно следовать имя базового класса. Например:

public class MyClass : JtyBaso

I

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

)

Заметьте, что в определении класса в C# допускается наличие только одного базового класса, и если данный класс наследуется от некоторого абстрактного класса, то в нем должны быть реализованы все наследуемые абстрактные члены (если, конечно, этот класс сам не является абстрактным).
182

Глава 9

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

public claee МуВаве

{

// члены класса internal class MyCleee t KyBase

{

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

)

А такой код не пройдет компиляцию: internal, class МуВаве

{

// члены класса > , public class МуС1ава i КуВава

(

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

>

Если базовый класс не задан, то класс наследуется только от базового класса System,object (для которого в C# используется синоним object). System.object безусловно является корневым в иерархии наследования для всех классов. Мы будем изучать этот фундаментальный класс ниже.

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

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

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

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

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