Реализация интерфейсов
Оценка 4.8

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

Оценка 4.8
docx
18.11.2021
Реализация интерфейсов
Л2-002163.docx

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

Формат записи класса, который реализует интерфейс:

 

class имя_класса : имя_интерфейса

{

// тело класса

}

 

Если класс реализует интерфейс, он должен это сделать в полном объеме, т.е. реализация интерфейса не может быть выполнена частично.

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

Класс может наследовать базовый класс и реализовать один или не- сколько интерфейсов. В этом случае список интерфейсов должен воз- главлять имя базового класса.

 

Рассмотрим пример реализации интерфейса ISeries, объявление ко- торого было приведено выше. Здесь создается класс с именем ByTwos, генерирующий ряд чисел, в котором каждое следующее число больше предыдущего на два.

 

class ByTwos : ISeries

{

int start; int val;

 

public ByTwos()

{

start = 0;

val = 0;

}

 

public int getNext()

{

val += 2; return val;

}


public void reset()

{

val = start;

}

 

public void setStart(int x)

{

start = x; val = start;

}

 

// Здесь могут быть дополнительные члены

}

 

Рассмотрим пример, демонстрирующий использование интерфейса, реализованного классом ByTwos.

using System; class SeriesDemo

{

public static void Main()

{

ByTwos ob = new ByTwos();

 

if (ob is ISeries)

Console.WriteLine("Объект реализует интерфейс ISeries"); else throw new Exception ("Объект НЕ реализует ISeries");

 

 

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

Console.WriteLine("Следующее значение = " + ob.getNext());

 

Console.WriteLine("\nПереход в исходное состояние."); ob.reset();

 

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

Console.WriteLine("Следующее значение = " + ob.getNext());

 

Console.WriteLine("\nНачинаем с числа 100."); ob.setStart(100);

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

Console.WriteLine("Следующее значение = " + ob.getNext());

}

}

}

 

Рассмотрим пример другой реализации интерфейса. Класс Primes ге- нерирует ряд простых чисел. Обратите внимание на то, что его способ реализации интерфейса ISeries в корне отличается от используемого классом ByTwos.


class Primes : ISeries

{

int start; int val;

 

public Primes()

{

start = 2;

val = 2;

}

 

public int getNext()

{

int i, j;

bool isprime;

 

val++;

for (i = val; i < 1000000; i++)

{

isprime = true;

for (j = 2; j < (i / j + 1); j++)

{

if ((i % j) == 0)

{

isprime = false; break;

}

}

if (isprime)

{

val = i; break;

}

}

return val;

}

 

public void reset()

{

val = start;

}

 

public void setStart(int x)

{

start = x; val = start;

}

}

 

Здесь важно понимать, что, хотя классы Primes и ByTwos генерируют разные ряды чисел, оба они реализуют один и тот же интерфейс ISeries.


 

Реализация интерфейсов Формат записи класса, который реализует интерфейс: class имя_класса : имя_интерфейса { // тело класса }

Реализация интерфейсов Формат записи класса, который реализует интерфейс: class имя_класса : имя_интерфейса { // тело класса }

Start(int x) { start = x; val = start; } //

Start(int x) { start = x; val = start; } //

Primes : ISeries { int start; int val; public

Primes : ISeries { int start; int val; public

Здесь важно понимать, что, хотя классы

Здесь важно понимать, что, хотя классы
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.