Set; // установить следующее число



}

}

 

// Реализовать интерфейс ISeries,  

class ByTwos : ISeries { int val;

public ByTwos() {

val = 0;

}

 

// Получить или установить значение,  

public int Next {  

get {

val += 2;

return val;

}

set {

val = value;

}

}

}

 

// Продемонстрировать применение интерфейсного свойства,

class SeriesDemo3 {

static void Main() {

ByTwos ob = new ByTwos();

 

// Получить доступ к последовательному ряду  

Чисел с помощью свойства,

for(int i=0; i < 5; i++)

Console.WriteLine("Следующее число равно " + ob.Next);

 

Console.WriteLine("\nНачать с числа 21");

ob.Next = 21;

for (int i=0; i <5; i++)

Console.WriteLine("Следующее число равно " + ob.Next);

}

}

 

При выполнении этого кода получается следующий результат.

 

Следующее число равно 2  

Следующее число равно 4  

Следующее число равно 6  

Следующее число равно 8  

Следующее число равно 10

 

Начать с числа 21  

Следующее число равно 23  

Следующее число равно 25

Следующее число равно 27  

С ледующее число равно 29  

Следующее число равно 31

 

 

Интерфейсные индексаторы

 

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

 

// Интерфейсный индексатор тип_элемента this[int индекс]{ get; set;

}

 

Как и прежде, в объявлении интерфейсных индексаторов, доступных только для чтения или только для записи, должен присутствовать единственный аксессор: get или set соответственно.

Ниже в качестве примера приведен еще один вариант реализации интерфейса ISeries, в котором добавлен индексатор только для чтения, возвращающий i-й элемент числового ряда.

 

//Добавить индексатор в интерфейс

using System;

// Добавить индексатор в интерфейс, using System;

public interface ISeries {

// Интерфейсное свойство,  

int Next {

get; // возвратить следующее по порядку число  

Set; // установить следующее число

}

 

Интерфейсный индексатор,

int this[int index] {

Get; // возвратить указанное в ряду число

}

}

 

// Реализовать интерфейс ISeries,  

class ByTwos : ISeries {

int val;

 

public ByTwos() {

val = 0;

}

 

// Получить или установить значение с помощью свойства,  

public int Next {  

get {

val += 2;

return val;

}

set {

val = value;

}

}

 

// Получить значение по индексу,

public int this[int index] {

get {

val = 0;

for(int i=0; i < index; i++) val += 2;

return val;

}

}

}

 

// Продемонстрировать применение интерфейсного индексатора,

class SeriesDemo4 {

static void Main() {

ByTwos ob = new ByTwos();

 

// Получить доступ к последовательному  

Ряду чисел с помощью свойства,

for (int i=0; i < 5; i++)

Console.WriteLine("Следующее число равно " + ob.Next);

 

Console.WriteLine("\nНачать с числа 21");

ob.Next = 21;

for (int i=0; i < 5; i++)

Console.WriteLine("Следующее число равно " + ob.Next);

 

Console.WriteLine("\nСбросить в 0");

ob.Next = 0;

// Получить доступ к последовательному  

//ряду чисел с помощью индексатора  

for (int i=0; i < 5; i++)

Console.WriteLine("Следующее число равно " + ob[i]);

}

}

 

Вот к какому результату приводит выполнение этого кода.

 

Следующее число равно 2  

Следующее число равно 4  

Следующее число равно 6  

Следующее число равно 8  

Следующее число равно 10

 

Начать с числа 21  

Следующее число равно 23  

Следующее число равно 25  

Следующее число равно 27  

Следующее число равно 29  

Следующее число равно 31

 

Сбросить в 0  

Следующее число равно 0  

Следующее число равно 2  

Следующее число равно 4  

Следующее число равно 6  

Следующёе число равно 8

 

 

Наследование интерфейсов

 

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

 

// Пример наследования интерфейсов,

using System;

public interface IA {

void Meth1();

void Meth2() ;

}

 

/ / В базовый интерфейс включены методы Meth1() и Meth2(),

// а в производный интерфейс добавлен еще один метод — Meth3().

public interface IB : IA {

void Meth3();

}

 

// В этом классе должны быть реализованы  

//все методы интерфейсов IA и IB.  

class MyClass : IB {

public void Meth1() {

Console.WriteLine("Реализовать метод Meth1().");

}

 

public void Meth2() {

Console.WriteLine("Реализовать метод Meth2().");

}

 

public void Meth3() {

Console.WriteLine("Реализовать метод Meth3().");

}

}

 

class IFExtend {

static void Main() {

MyClass ob = new MyClass();

 

ob.Meth1();

ob.Meth2();

ob.Meth3();

}

}

 

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

 

 


Дата добавления: 2019-02-12; просмотров: 262; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!