Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_otvety.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.9 Mб
Скачать
  1. Наследование и виртуальные функции. Механизмы наследования

Объявление класса в языке C# создает новый ссылочный тип, определяющий как описание методов, так и их реализацию.

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

Интерфейс может быть объявлен для расширения одного или нескольких интерфейсов.

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

  1. Классы – интерфейсы.

любой класс может наследоваться от нескольких интерфейсов.

Производные классы

В среде 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]