Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
k_zachetu_po_programmirovaniyu (1).docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆
  1. Описание наследования классов в c#.

  • Один класс может быть производным от другого класса (базового).

  • Класс может быть наследником только одного базового класса

  • Производный класс может использовать поля, свойства и методы базового класса (и классов для которых он является производным).

  • Все классы наследуются от базового класса System.Object, который содержит

    • конструктор по умолчанию new()

    • ToString();

    • GetType();

    • GetHashCode();

    • Equals().

Два класса, которые могут быть связаны с помощью отношения наследования должны пройти тест “является видом …” ("is a" test.)

Например:

  • Треугольник является видом фигуры

  • Руководитель является видом служащего

  • Легковой автомобиль является видом транспортного средства

Например нельзя наследовать:

велосипед не является видом колеса

Объект производного класса имеет доступ ко всем:

  • Открытым (public) свойствам и методам базового класса

  • Защищенным (protected) свойствам и методам базового класса

  • Методам переопределенным (override) в производном классе

  • Свойствам и методам скрытым (new) в производном классе

  • Любым свойствам и методам производного класса

Конструктор производного класса:

  • Конструктор производного класса может вызывать на выполнение требуемый конструктор базового класса.

рublic Circle (int a, int b, int r) : base(a, b)

{

base._x = 0; // обращение в переменной // базового класса

}

Изменение методов в производном классе:

Если в производном классе есть метод с именем и сигнатурой идентичной методу базового класса, то он может:

  • скрывать (shadowing) метод базового класса, т.е. работать только с использованием ссылки производного типа

  • заменять (переопределять, overriding) метод базового класса, т.е. работать с ссылками и производного и базового типа

  1. Интерфейсы. Назначение, описание и использование.

  • Интерфейсы это еще один пользовательский тип.

  • Интерфейсы позволяют описывать некоторые желательные свойства и методы, которыми должны обладать разные классы.

  • Особенности интерфейсов:

    • можно описывать переменные такого типа, ссылочный тип;

    • нельзя создавать объекты (экземпляры) такого типа;

    • включает набор абстрактных открытых (public) методов.

  • То, что интерфейс не может иметь реализации, означает, что все его методы и свойства являются абстрактными.

  • Интерфейс описывает поведение, которое конкретный класс или структура может выбрать для реализации.

  • Класс (или структура) может при необходимости поддерживать много интерфейсов, тем самым поддерживая множество стилей поведения.

  • Интерфейс (interface) во много аналогичен именованному набору абстрактных методов.

Интерфейс – это открытый контракт между поставщиком услуг (методов) и потребителем этих услуг.

  • Интерфейс позволяет организовать свободную связь между клиентом и объектом (т.е. можно указать, что требуемый объект поддерживает некоторый интерфейс).

  • Интерфейс представляет собой полностью абстрактный класс, который может включать только открытые абстрактные

    • методы,

    • свойства,

    • индексаторы

    • события.

Описание интерфейса:

<режим доступа> interface <имя_интерфейса>

{

<тип_результата> имя_метода1(<параметры>);

//

< тип_результата> имя_методаN(<параметры>);

}

Работа с интерфейсом:

  • Описание интерфейса - Методы интерфейса объявляются без указания модификаторов доступа.

interface IScalable

{

void ScaleX(float factor);

void ScaleY(float factor);

}

  • Реализация интерфейса (класс Map реализует – поддерживает интерфейс IScalable) – override не указывается

class Map : IScalable

{

public void ScaleX(float factor) {. . .};

public void ScaleY(float factor) {. . .};

}

  • Использование интерфейса

Map map1 = new Map( );

map1.ScaleX(100f);

map1.ScaleY(200f);

IScale intrf;

intrf = (IScale) map1; // преобразование к интерфейсу

intrf.ScaleX(200f);

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