Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

Глава 14. Интерфейсы

14.1. Два вида наследования в ооп

Методология ООП рассматривает два вида наследования – наследование

реализации и наследование специфицированной функциональности (контракта).

Наследование реализации

"наследование реализации"

предполагает, что

производный тип получает от базового типа поля и использует их наряду со своими

полями, добавленными в его объявлении. При выделении памяти для объекта

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

явно объявленных в теле производного класса. Унаследованные методы базового

класса либо входят в арсенал методов производного класса, либо переопределяются

в его объявлении.

Наследование

специфицированной

функциональности

"наследование

функциональности" означает, что все типы, построенные на основе одного и того

же базового, имеют одинаковую функциональность, и эта функциональность

определена спецификацией базового типа.

Наследование реализации обеспечено в C# наследованием классов.

Наследование

специфицированной

функциональности

может

быть

реализовано либо на основе абстрактных классов, не включающих полей, либо на

основе интерфейсов.

Итак, интерфейс "интерфейс" в C# (и, например, в языке Java) это механизм,

предназначенный

для

определения

правил

поведения

объектов

ещё

не

существующих классов. Интерфейс описывает какие действия нужны для объектов

класса, но не определяет как эти действия должны выполняться. В объявление

интерфейса входят декларации (прототипы) методов, свойств, индексаторов и

событий. Прототип метода

"метод:прототип метода"

не содержит тела, в нём

только заголовок метода, завершённый точкой с запятой. Прототипы других члено

в

рассмотрим позднее.

В отличие от классов с помощью интерфейсов нельзя определять объекты. На

основе интерфейса объявляются новые классы, и при этом используется механизм

наследования. Говорят, что класс, построенный на базе интерфейса, реализует

данный интерфейс. Таким образом, интерфейс это только описание тех

возможностей, которые будут у класса, когда он реализует интерфейс. Другими

словами интерфейс определяет средства взаимодействия с внешним миром объектов

реализующего его класса.

На основе одного интерфейса могут быть созданы несколько разных классов,

и у каждого из этих классов будет набор всех средств, объявленных в интерфейсе.

Однако каждый из классов, реализующих один и тот же интерфейс, может по-

своему определить эти средства. Зная, какие методы, свойства, индексаторы и

события декларированы в интерфейсе, программист знает средства взаимодействия

с объектами класса, реализовавшего данный интерфейс. Таким образом, объекты

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

Это наряду с перегрузкой методов и операций ещё один пример проявления

полиморфизма "полиморфизм" .

Более того, интерфейсы позволяют реализовать в языке C# одну из

фундаментальных

посылок

методологии

объектно

-

ориентированного

программирования – принцип подстановки "принцип подстановки" Лискова (см.

[3]). В соответствии с этим принципом объекты разных классов, реализующих один

и тот же интерфейс, могут заменять друг друга в ситуации, где от них требуется

функциональность, специфицированная интерфейсом.

Соседние файлы в папке CSBasicCourse2ndedPodbelsky