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

Изтрито е съдържание Добавено е съдържание
Редакция без резюме
Редакция без резюме
Ред 103:
Динамичните методи за разлика от статичните са "вързани" към точно определен обект на дадения клас, и извършват манипулации въз основа на данните на дадения обект, а не на класа като цяло.
Ако имаме два обекта - примерно carA и carB - от клас Automobiles, и всеки от обектите пази в себе си данни за последното показание на километража и заредените литри гориво, тогава извикването на carA.GetAverageMPG() и съответно на carB.GetAverageMPG() ще връща разхода на гориво за конкретния обект, ползвайки данните от обекта. Динамичните методи се извикват чрез добавяне на името на обекта преди името на метода.
 
==Предефиниране на методи==
Предефинирането (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 на методи==