Претоварването на метода, известно също като функционално претоварване или полиморфизъм по време на компилация, е концепция за наличието на два или повече метода със същото име, но различен подпис в същия обхват. Има много езици за програмиране, които поддържат тази функция: Ada, C ++, C #, D и Java.
Пример за претоварване на метод в C #
class OverloadShapes {float Полигон (int радиус, float pi) {float circleArea = pi * радиус * радиус; } int Полигон (int дължина, int ширина) {int rectangleArea = дължина * широчина; } int Полигон (int страна) {int squareArea = страна * страна; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class OverloadShapes {float Полигон (int радиус, float pi) {float circleArea = pi * радиус * радиус; } int Полигон (int дължина, int ширина) {int rectangleArea = дължина * широчина; } int Полигон (int страна) {int squareArea = страна * страна; }} |
Както е показано в горния пример, методът "Polygon" е претоварен 3 пъти с различен подпис на метода, т.е. типът или броят на параметрите са различни.
Прекратяване на метода
Преодоляване на метод, известен също като функцията Overithing или функционален полиморфизъм, е OOP функция, която позволява на детската класа да предостави собствена реализация на метода, определен в родителския клас. Реализацията в дъщерния клас отменя дефиницията на метода в базовия клас, при условие че методът в детската класа трябва да има същото име, тип подпис и връщане.
Пример за заместване на метод в C #
class Source1 {public void draw () {Console.Writeline ("Аз съм в клас Source1"); }} class Source2 разширява Source1 {public void draw () {Console.Writeline ("Аз съм в клас Source2"); }}1 2 3 4 5 6 7 8 9 10 | клас Source1 {публично невалиден () {Console. Writeline ("Аз съм в клас Source1"); }} class Source2 разширява Source1 {public void draw () {Console. Writeline ("Аз съм в клас Source2"); }} |
Тук методът draw в класа Source2 замества метода draw, определен в класа Source1.
Разлика между претоварването на метода и отхвърлянето на метода
- В метода методите на претоварване трябва да имат различен подпис. В метода методите на заместване трябва да имат един и същ подпис.
- Функция Претоварване е да се „добави“ или „разшири“ повече към поведението на метода. Преосмислянето на функцията е да се промени напълно или да се предефинира поведението на даден метод.
- Използва се претоварване на метода за постигане на полиморфизъм по време на компилация; използва се за постигане на полиморфизъм по време на изпълнение.
- В метода / функцията претоварването на компилатора знае кой обект е присвоен към кой клас по време на компилирането, но в метода на заместване тази информация не е известна до времето на изпълнение.
- Функцията Претоварване се извършва в един и същ клас, докато Презареждането се извършва в клас, получен от базов клас.