Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_ekzamenu_po_OOP.docx
Скачиваний:
2
Добавлен:
22.09.2019
Размер:
32.83 Кб
Скачать
  1. Абстрактные классы. Синтаксический блок. Особенности.

Класс, содержащий один или больше абстрактных методов, должен быть также объявлен как абстрактный, и для этого перед его объявлением class указывается модификатор abstract

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

abstract class name

{

// Class members here.

}

  1. Полиморфизм как концепция ооп.

Понятие наследования является основой еще одной важной концепции ООП — по¬лиморфизма. Полиморфизм обеспечивает доступ к объектам разных типов с помощью одной пе¬ременной. Это позволяет одному имени функции соответствовать нескольким различ¬ным реализациям на этапе исполнения.

  1. Потеря и восстановление информации о типе. Операторы is и as.

С# следит за тем, на какой объект (и какого типа) указывает переменная в каждый момент времени. Для доступа к этой информации в программе применяются операции is и as.

Операция is позволяет проверить, является ли переменная (например, myShape) указателем на объект определенного типа (например, Circle). Результат ее — логическое значение true или false.

Чтобы проверить, содержит ли myShape объект Circle, используется логическое выражение:

myShape is Circle, которое возвращает true, если myShape указывает на Circle, и false — в противном случае.

Операция as предназначена специально для нисходящего приведения. Она объеди­няет операцию is проверки типа, оператор if и операцию приведения в одном действии.

  1. Множественное наследование. Интерфейсы область применения. Синтаксический блок.

С# не поддерживает множественного наследования. Однако он позволяет типу наследовать множество интерфейсов. Это значит, что класс С# может наследоваться от другого класса и любого количества интерфейсов.

Интерфецсы содержат сигнатуры свойств, методов и событий.

Интерфейсы объявляются с помощью ключевого слова interface.

interface имя{

возвращаемый_тип имя_метода1 (список_параметров);

возвращаемый_тип имя_метода2 (список_параметров);

// ...

возвращаемый_тип имя_метода (список_параметров);

}

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

class имя_класса : имя_интерфейса {

// тело класса

}

  1. Делегаты. Область применения. Синтаксический блок.

Применение делегата аналогично применению абстрактного метода, он определяет тип возвращаемого значения, его формальные параметры, но не определяет заму реализацию.

Применение делегат полезно в том случае, если во время написания кода известно, что действие должно произойти в определенной точке кода, но сам путь реализации его еще не известен.

[<Спецификатор_доступности>] delegate <Тип_возвращаемого_заначения> <Идентификатор>([<Список_формальных_параметров>])

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