Поиск

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

Позвольте мне придерживаться ясности в изложении этого вопроса, поскольку множественное наследование обсуждали во многих группах новостей и рассылках: С# не поддерживает множественное наследование. Но вы можете объединять характеристики поведения Нескольких программных сущностей, реализовав несколько интерфейсов. Об интерфейсах и способах работы с ними см. главу 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
{
}

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