Основы объектно-ориентированного программирования на языке C# book | Page 143

7.7 Полiморфiзм Iншi оператори перевантажувати не можна, але можна певнi опе- ратори можна обчислити за допомогою операторiв, що допускають перевантаження. Синтаксис перевантаження операторiв такий: Пе- ревантаження унарного оператору: public static тип[] operator оператортип[]([ операнду] операнд[]) { //нова реалiзацiя оператору } Перевантаження бiнарного оператору: public static тип[] operator оператортип[]([ операнду1] операнд[1], тип[ операнду2] операнд[2]) { // нова реалiзацiя оператору } Модифiкатори public и static обов’язковi. Замiсть [оператор] мо- же бути будь-який оператор, який можна перевантажити. Ознакою того, що робиться саме перевантаження оператору, слу- жить ключове слово operator , за яким повинен розташовуватися знак оператору, що перевантажується. У якостi операнду при переванта- женнi унарного оператора може виступати лише об’єкт того ж класу, що й клас, для якого ми робимо перевантаження. При перевантаже- нi бiнарного оператору хоча б один iз двох операндiв повинен бути того ж класу, для якого робиться це перевантаження. Слiд зазначи- ти, що параметри можна передавати в метод для реалiзацiı̈ вiдповiд- ноı̈ операцiı̈ лише за значенням, ref i out не слiд використовувати. У C# операцiı̈ скороченого присвоювання автоматично виконуються при перевантаженнi вiдповiдних бiнарних операцiй. Тобто, якщо в класi вже перевантаженi операцiı̈ + и - , мы можемо використовувати i += , i -= . Розглянемо простий приклад. Нехай необхiдно працювати iз точка- ми на площинi. Точка на площинi має двi координати (x,y) . Визначимо бiнарну операцiю « + », що застосується до двох точок таким чином: (x1,y1)+(x2,y2)=(x1+x2,y1+y2); Аналогiчно визначається бiнарна операцiя « - »: (x1,y1)-(x2,y2)=(x1-x2,y1-y2); Визначимо унарнi операцiı̈: 143