Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
12.02.2015
Размер:
254.98 Кб
Скачать

Интерфейсы

Интерфейсы являются чистыми “pure” абстрактными базовыми класами

Они могут содержать только абстрактные методы, но не должны содержать реализаций методов

Класс, который реализует данный интерфейс, обязан обеспечить реализацию

функций-членов, перечисленных в

public interface IFile

Интерфейсе{

int delFile(); void disFile();

}

.NET Framework and C# Programming Language \ Chapter 5 \ 12 o

Интерфейсы – пример

public class MyFile : IFile

{

public int delFile()

{

System.Console.WriteLine("DelFile Implementation!"); return(0);

}

public void disFile()

{

System.Console.WriteLine("DisFile Implementation!");

}

}

class Test

{

static void Main()

{

MyFile objMyFile = new MyFile(); objMyFile.disFile();

int retValue = objMyFile.delFile();

}

}

.NET Framework and C# Programming Language \ Chapter 5 \ 13 o

Интерфейсы – пример

Если мы объединим два последних фрагмента

кода и скомпилируем их, то получим результат

выполнения:

Рассмотрим еще один пример:

public class BaseforInterface

{

public void open()

{

System.Console.WriteLine("This is the open method of BaseforInterface");

}

}

.NET Framework and C# Programming Language \ Chapter 5 \ 14 o

Интерфейсы – пример с наследованием

public class MyFile : BaseforInterface, IFile

{

public int delFile()

{

System.Console.WriteLine("DelFile Implementation!"); return(0);

}

public void disFile()

{

System.Console.WriteLine("DisFile Implementation!");

}

}

class Test

{

static void Main()

{

MyFile objMyFile = new MyFile(); objMyFile.disFile();

int retValue = objMyFile.delFile(); objMyFile.open();

}

}

.NET Framework and C# Programming Language \ Chapter 5 \ 15 o

Интерфейсы – пример с наследованием

Результат выполнения:

.NET Framework and C# Programming Language \ Chapter 5 \ 16 o

Многоинтерфейсные

реализации

C# позволяет многоинтерфейсные реализации т.е. класс может реализовать более одного интерфейса.

public interface IFileTwo

{

void applySecondInterface();

}

.NET Framework and C# Programming Language \ Chapter 5 \ 17 o

Многоинтерфейсные реализации - пример

public class MyFile : BaseforInterface, IFile, IFileTwo

{public int delFile()

{ System.Console.WriteLine("DelFile Implementation!");

return(0); } public void disFile()

{System.Console.WriteLine("DisFile Implementation!"); } public void applySecondInterface()

{System.Console.WriteLine("ApplySecondInterface Implementation!"); }

}

class Test

{static void Main()

{MyFile objMyFile = new MyFile(); objMyFile.disFile();

int retValue = objMyFile.delFile(); objMyFile.open(); objMyFile.applySecondInterface();

}

}

.NET Framework and C# Programming Language \ Chapter 5 \ 18 o

Явная реализация интерфейса

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

одинаковым именем содержится в 2

public interface IFile

{int delFile();

void disFile(); } public interface IFileTwo

{void applySecondInterface(); void disFile();}

public class MyFile : BaseforInterface, IFile, IFileTwo

 

{...

 

 

void IFile.disFile()

 

{

System.Console.WriteLine("IFile Implementation of DisFile");

}

void IFileTwo.disFile()

 

{

System.Console.WriteLine("IFileTwo Implementation of DisFile");

}

 

 

...

}

.NET Framework and C# Programming Language \ Chapter 5 \ 19 o

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

интерфейсов

Можно создавать новые интерфейсы, объединяя и комбинируя другие, уже

существующие, интерфейсы.

interface IAllFile : IFile, IFileTwo

{

//More operations can be added if necessary

//(apart from that of IFile & IFileTwo)

}

.NET Framework and C# Programming Language \ Chapter 5 \ 20 o

Резюме

Виртуальные функции удобны в случае необходимости вызова метода производного класса из объекта базового класса.

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

Абстрактные базовые классы – это классы, которые могут содержать как абстрактные члены (методы без реализации), так и неабстрактные члены. Метод без реализации в C# называется

операцией (operation).

Интерфейс – это чистый абстрактный базовый класс. Он может содержать только абстрактные методы, но не должен содержать исходного кода реализации.

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

.NET Framework and C# Programming Language \ Chapter 5 \ 21 o

Соседние файлы в папке Инструментальные средства