Метод (програмиране): Разлика между версии

Изтрито е съдържание Добавено е съдържание
Редакция без резюме
Ред 105:
 
==Предефиниране на методи==
Предефинирането (Overloading) на метод е възможността да имаме методи с едно и също име, но с различен брой параметри, които да имат различен код в себе си. Това е възможно, тъй като компилатора различава един метод от друг не само по името, но и по броя (и типа) на параметрите предавани към него. Това ни позволява например да имаме процедура CalculateArea(), която да може да изчислява площта както на правоъгълник, така и на кръг (а по желание и на още геометрични фигури), стига броя и/или типа на подаваните параметри да е уникален. '''Важно: това не важи за имената на променливите! Параметри с различни имена на променливи които обаче са от еднакъв тип не правят двата метода различни и компилатора няма да разреши такава дефиниция.''' Метод с име CalculateArea(int height, int width) може да се ползва за изчисляване на площта на правоъгълник, а метод със същото име, но само с един параметър: CalculateArea(doube radius) да изчислява площта на кръг. Дори и ако решим да ползваме същото име за процедура за изчисляване площта на квадрат по този начин: CalculateArea(int side) то това ще е правилно от гледна точка на компилатора, макар че има 2 метода с по 1 параметър. Разликата е че единия път параметъра е double, а другия int. В последния случай трябва да се подхожда с повишено внимание, тъй като ако имаме окръжност с радиус примерно 2, запомнен в int променливата radius извикването на метода ще изчисли площта за квадрат, а не за кръг. Но е достатъчно да се извика с area = CalculateArea((double) radius) за да се извика коректния метод за кръг.
 
==Overriding на методи==