
- •Объявление и определение класса.
- •Конструкторы и деструкторы ( типы конструкторов и деструкторов)
- •Дружественные функции.
- •Пеpегpузка опеpаций ( синтаксис operator)
- •Статические компоненты класса.
- •Пространства имен.
- •Иерархия классов ( последовательность работы конструкторов и деструкторов )
- •Доступ к наследуемым компонентам
- •Виртуальные функции (когда применяются, форма вызова)
- •Шаблоны ( пример template)
- •Ввод-вывод в файл. Сохранение объектов в файле.
- •Обработка исключений (блоки try, throw, catch)
- •Использование классов при организации исключений. Иерархия исключений
- •Паттерны и их классификация
- •Абстрактная фабрика.
- •Наблюдатель.
- •Классификация типов данных.
- •Массивы и строки. Оператор foreach
- •Классы, создание объектов.
- •Методы класса и их параметры.
- •Свойства класса.
- •Наследование и виртуальные функции. Механизмы наследования
- •Классы – интерфейсы.
- •Производные классы
- •Методы - члены класса
- •Виртуальные методы
- •Делегаты.
- •Создаем собственный делегат
Наследование и виртуальные функции. Механизмы наследования
Объявление класса в языке C# создает новый ссылочный тип, определяющий как описание методов, так и их реализацию.
Объявление интерфейса создает новый ссылочный тип, который специфицирует описание методов и имена некоторых констант, но не определяет саму реализацию.
Интерфейс может быть объявлен для расширения одного или нескольких интерфейсов.
Наследование позволяет определять новые классы в терминах существующих классов. В языке C# поддерживается только простое наследование: любой подкласс является производным только от одного непосредственного суперкласса. При этом любой класс может наследоваться от нескольких интерфейсов.
Классы – интерфейсы.
любой класс может наследоваться от нескольких интерфейсов.
Производные классы
В среде VisualStudio.NET новый производный класс можно создать, используя окно ClassView (выполнив в нем команду контекстного меню Add|Add Class). Рисунок 16.1 иллюстрирует страницы диалога C# Class Wizard, предлагаемого средой VisualStudio.NET для создания нового класса.
Рис.
16.1. Диалог
C# Class Wizard
Имя создаваемого класса указывается в поле Class Name на странице Class Options диалога C# Class Wizard.
В поле Namespace указывается пространство имен, к которому будет принадлежать создаваемый класс. По умолчанию проект размещается в пространстве имен, одноименным с именем проекта.
В поле Access выбирается модификатор доступа для создаваемого класса.
Для класса в языке C# возможно использование двух модификаторов доступа:
public - определяет, что нет ограничений на использование класса;
internal - определяет, что класс будет доступен для файлов, входящих в ту же сборку.
Сборка - это физический файл, который состоит из нескольких PE-файлов (portable executable), генерируемых компилятором среды .NET. В сборку входит декларация (manifest), содержащая описание сборки для управляющей среды .NET.
Класс может имеет один из следующих модификаторов класса:
abstract - определяет, что класс должен быть использован только как базовый класс других классов. Такие классы называются абстрактными классами;
sealed - определяет, что класс нельзя использовать в качестве базового класса. Такие классы в языке C# иногда называются изолированными классами.
Очевидно, что изолированный класс не может быть одновременно и абстрактным классом.
Объявление класса может иметь следующее формальное описание:
МодификаторДоступа МодификаторКласса class ИмяКласса
: ИмяНаследуемогоКласса
{ТелоКласса
}
Тело класса содержит описание переменных, методов и вложенных классов и заключается в фигурные скобки. В частном случае тело класса может не содержать ни одного объявления.
Например:
namespace CA1
{
public abstract class Class2 : CA1.Class1
{
public Class2()
{
// TODO: Add constructor logic here
}
}
}
Методы - члены класса
В среде VisualStudio.NET добавить в класс новый метод можно, используя контекстное меню окна Class View. На рис. 16.2 приведен диалог C# MetodWizard, позволяющий определить модификаторы метода и список формальных параметров.
Рис.
16.2. Диалог
C# MetodWizard
Язык C# поддерживает следующие модификаторы метода члена класса:
static - определяет статический метод, доступный без создания экземпляра класса;
abstract - определяет абстрактный метод, который является членом абстрактного класса;
virtual - метод, реализация которого может быть переопределена в производных классах;
extern - метод, имеющий реализацию вне данного класса (внешний метод);
override- метод, выполняющий переопределение виртуальной функции, наследуемой от базового класса;
new - метод, скрывающий в производном классе наследуемый метод с тем же именем (если ключевое слово не указано, то имя скрывается, но при компиляции отображается предупреждение warning).
Порядок указания модификаторов доступа и модификаторов метода несущественен.
Виртуальные и абстрактные методы всегда должны указываться с модификатором доступа public.