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

6.Перегрузка методов

В C# допускается совместное использование одного и того же имени двумя или более методами одного и того же класса, при условии, что их параметры объявляются по-разному. В этом случае говорят, что методы перегружаются, а сам процесс называется перегрузкой методов. Перегрузка методов относится к одному из способов реализации полиморфизма в C#.

В общем, для перегрузки метода достаточно объявить разные его варианты, а об остальном позаботится компилятор. Но при этом необходимо соблюсти следующее важное условие: тип или число параметров у каждого метода должны быть разными.

Совершенно недостаточно, чтобы два метода отличались только типами возвращаемых значений. Они должны также отличаться типами или числом своих параметров. (Во всяком случае, типы возвращаемых значений дают недостаточно сведений компилятору C#, чтобы решить, какой именно метод следует использовать.) Разумеется, перегружаемые методы могут отличаться и типами возвращаемых значений. Когда вызывается перегружаемый метод, то выполняется тот его вариант, параметры которого соответствуют (по типу и числу) передаваемым аргументам.

class UserInfo

{

// Перегружаем метод ui

public void ui()

{

Console.WriteLine("Пустой метод\n");

}

public void ui(string Name)

{

Console.WriteLine("Имя пользователя: {0}",Name);

}

public void ui(string Name, string Family)

{

Console.WriteLine("Имя пользователя: {0}\nФамилия пользователя: {1}",Name,Family);

}

public void ui(string Name, string Family, byte Age)

{

Console.WriteLine("Имя пользователя: {0}\nФамилия пользователя: {1}\nВозраст: {2}", Name, Family, Age);

}

}

class Program

{

static void Main(string[] args)

{

UserInfo user1 = new UserInfo();

// Разные реализации вызова перегружаемого метода

user1.ui();

user1.ui("Ерохин", "Александр", 26);

Console.ReadLine();

}

}

}

7. Интерфейс

Интерфейс - это набор пустых (без реализации) методов и свойств, обязательных к определению в классах, его наследующих. Используется как альтернатива множественного наследования, запрещенного в С#. Несколько разных классов могут наследовать один интерфейс. Тут работает принцип позднего связывания.

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

Для реализации интерфейса в классе должны быть предоставлены тела (т.е. конкретные реализации) методов, описанных в этом интерфейсе. Каждому классу предоставляется полная свобода для определения деталей своей собственной реализации интерфейса. Следовательно, один и тот же интерфейс может быть реализован в двух классах по-разному. Тем не менее в каждом из них должен поддерживаться один и тот же набор методов данного интерфейса. А в том коде, где известен такой интерфейс, могут использоваться объекты любого из этих двух классов, поскольку интерфейс для всех этих объектов остается одинаковым. Благодаря поддержке интерфейсов в C# может быть в полной мере реализован главный принцип полиморфизма: один интерфейс — множество методов.

Интерфейсы объявляются с помощью ключевого слова interface. Ниже приведена упрощенная форма объявления интерфейса:

interface имя{

возвращаемый_тип имя_метода_1 (список_параметров);

возвращаемый_тип имя_метода_2 (список_параметров);

// ...

возвращаемый_тип имя_метода_N (список_параметров);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]