![]() |
|
![]() ![]() |
|
Наш телефон: Статьи: Выездные услуги:
Программы: Поиск по сайту: Новогодние Акции:
Получи скидку на перечисленные услуги от 5 до 10%.
|
Реализация полиморфизмаВ данном контексте интерфейс — это некое соглашение. Любой объект, в котором реализован данный интерфейс, гарантированно содержит реализацию для членов, объявленных в этом интерфейсе. Если объект поддерживает некоторый интерфейс, любой другой объект, в котором реализован этот интерфейс, окажется способен взаимодействовать с ним. Интерфейс определяет только члены, реализованные в объекте. В определении интерфейса ничего не говорится о реализации его членов — оно содержит лишь описание типов параметров и возвращаемых значений. Реализация членов, объявленных в интерфейсе, целиком и полностью ложится на класс, в котором этот интерфейс реализован. Так, в разных объектах одни и те же члены интерфейса реализуются совершеннопо-разному. Рассмотрим интерфейс Интерфейсы определяются с помощью ключевого слова Interface (interface), например, так:Visual Basic .NET Public Interface IDrivable End Interface Visual C# public interface IDrivable Этот пример объявляет интерфейс Visual Basic .NET IDrivable, но не определяет ни одного члена этого интерфейса. Методы-члены интерфейса определяют с обычной сигнатурой метода, но без модификаторов доступа, таких, как public, private и др. Модификатор доступа, заданный для интерфейса, определяет уровень доступа для всех его членов. Таким образом, если интерфейс объявлен с модификатором Public, этот модификатор действует для всех его членов. Вот пример определения методов как членов интерфейса:{ void GoForward(int Speed): void Halt(): int DistanceTraveled(): } Помимо методов, в интерфейсах разрешается определять свойства. На Visual Basic свойства-члены интерфейса необходимо определять с ключевым словом ReadOnly или Write Only. В С# определение свойства включает метод-получатель (getter), метод-установщик (setter) или оба этих метода. Определение свойства за вершается указанием типа значения, возвращаемого свойством. Вот пример опре деления свойства:Visual Basic .NET Public Interface IDrivable Определения остальных членов опущены. Это определение свойства, доступного только для чтения. ReadOnly Property FuelLevelO As Integer End Interface Visual C# public interface IDrivable get; // Чтобы сделать это свойство доступным только для чтения, // объявите здесь метод set. Public Interface IDrivable Sub GoForward(ByVal Speed As Integer)SUD Halt()Function Distance! raveled() As Integer End Interface Visual C# public interface IDrivableIShape, определяющий единственный метод —Calculate Area. При этом класс Circle, в котором реализован этот интерфейс, вычисляет площадь фигуры совсем не так, как это делает класс Square, в котором также реализован этот интерфейс. Тем не менее объект, которому необходимо взаимодействовать через IShape, способен вызвать метод CakulaleArea из класса Circle или Square и получить корректный результат. |
![]() | ремонт компьютеров | обслуживание компьютеров | восстановление данных | настройка компьютеров | настройка wi-fi | |
|