Принципы объектно-ориентированного программирования

         

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



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

Позвольте мне придерживаться ясности в изложении этого вопроса, поскольку множественное наследование обсуждали во многих группах новостей и рассылках: С# не поддерживает множественное наследование. Но вы можете объединять характеристики поведения Нескольких программных сущностей, реализовав несколько интерфейсов. Об интерфейсах и способах работы с ними см. главу 9. А пока вы можете думать об интерфейсах на С#, как вы думаете о СОМ-интерфейсах. \ С учетом этого следующая программа ошибочна: \

class Foo

{

}



class Bar

<

>

class MITest : Foo, Bar {

public static void Main ()

{

} }

Допущенная в этом примере ошибка связана со способом реализации интерфейсов. Интерфейсы, выбранные для реализации, перечисляются после базового класса данного класса. В этом примере компилятор С# думает, что Ваг должен быть интерфейсом. Поэтому компилятор С# выдаст вам сообщение об ошибке:

'Bar':type in interface list is not an interface

Следующий, более реалистичный, пример абсолютно верен, так как класс MyFancyGrid происходит от Control и реализует интерфейсы ISeria-lizable и IDataBound:

class Control

{

}

interface ISerializable

{

}

interface IDataBound

{

}

class MyFancyGrid : Control, ISerializable, IDataBound

{

}

Главное здесь то, что единственным способом реализации чего-либо, напоминающим множественное наследование, на С# является применение интерфейсов.

 

Содержание раздела