265.07K
Category: programmingprogramming

Полиморфизм, перегрузка методов и операторов. Ключевое слово static

1.

ПОЛИМОРФИЗМ,
ПЕРЕГРУЗКА МЕТОДОВ И
ОПЕРАТОРОВ

2.

ЧТО ТАКОЕ ПОЛИМОРФИЗМ?
• Полиморфизм (от греч. poly — много и morphe — форма)
— один из главных столпов объектно-ориентированного
программирования. Его суть заключается в том, что один
фрагмент кода может работать с разными типами данных.
• В C# это реализуется с помощью перегрузок (overloading).

3.

• C# — строго типизированный язык. Это значит,
что вы не можете поместить строку в
переменную типа int — сначала нужно провести
преобразование. Так же и в метод нельзя
передать параметр типа float, если при
объявлении метода был указан тип double.

4.

• Так происходит потому, что у метода WriteLine () есть
перегрузки — методы с таким же названием, но
принимающие другие аргументы:

5.

• Стоит учитывать, что
значение имеют только
типы и количество
передаваемых аргументов

6.

• У этих методов
одинаковые параметры, но
разный возвращаемый тип.
Попытка скомпилировать
такой код приведёт к
ошибке

7.

• Ошибка при компиляции
возникнет и при создании
перегрузки с такими же
аргументами, но с другими
названиями:

8.

ПЕРЕГРУЗКА
КОНСТРУКТОРОВ

9.

ПЕРЕГРУЗКА ОПЕРАТОРОВ
• +,
• ++,
• -,
В определении класса нужно добавить
вот такую конструкцию:
• --,
• *,
• /,
• ==,
• >,
• <,
• >=,
• <=
Так как использоваться этот оператор должен без
объявления экземпляра класса (item1 + item2, а не item1
item1.+ item2), то указываются модификаторы public static.

10.

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

11.

• Теперь при сложении двух объектов класса Item мы будем
получать третий объект с улучшенными параметрами. Вот
пример использования такого оператора:

12.

КЛЮЧЕВОЕ
СЛОВО STATIC

13.

ЗАЧЕМ НУЖЕН STATIC?
• Иногда требуется определить такой член класса, который
будет использоваться независимо от всех остальных объектов
этого класса. Как правило, доступ к члену класса организуется
посредством объекта этого класса, но в то же время можно
создать член класса для самостоятельного применения без
ссылки на конкретный экземпляр объекта. Для того чтобы
создать такой член класса, достаточно указать в самом начале
его объявления ключевое слово static.

14.

• Если член класса объявляется как static, то он
становится доступным до создания любых объектов
своего класса и без ссылки на какой-нибудь объект. С
помощью ключевого слова static можно объявлять как
переменные, так и методы. Наиболее характерным
примером члена типа static служит метод Main(),
который объявляется таковым потому, что он должен
вызываться операционной системой в самом начале
выполняемой программы.

15.

16.

ОГРАНИЧЕНИЯ STATIC
• В методе типа static должна отсутствовать ссылка this, поскольку такой метод не
выполняется относительно какого-либо объекта
• В методе типа static допускается непосредственный вызов только других методов
типа static, но не метода экземпляра из того самого же класса. Дело в том, что
методы экземпляра оперируют конкретными объектами, а метод типа static не
вызывается для объекта. Следовательно, у такого метода отсутствуют объекты,
которыми он мог бы оперировать
• Аналогичные ограничения накладываются на данные типа static. Для метода типа
static непосредственно доступными оказываются только другие данные типа static,
определенные в его классе. Он, в частности, не может оперировать переменной
экземпляра своего класса, поскольку у него отсутствуют объекты, которыми он мог
бы оперировать
English     Русский Rules