Preobremenitev metod, znana tudi kot preobremenitev funkcij ali polimorfizem časa sestave, je pojem dveh ali več metod z istim imenom, vendar različnega podpisa v istem obsegu. Obstaja veliko programskih jezikov, ki podpirajo to funkcijo: Ada, C ++, C #, D in Java.
Primer preobremenitve metode v C #
razred OverloadShapes {float Polygon (int polmer, float pi) {float circleArea = pi * radijus * polmer; } int Poligon (int dolžina, int širina) {int rectangleArea = dolžina * širina; } int Poligon (int stran) {int squareArea = stranska stran; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | razred OverloadShapes {float Polygon (int polmer, float pi) {float circleArea = pi * radijus * polmer; } int Poligon (int dolžina, int širina) {int rectangleArea = dolžina * širina; } int Poligon (int stran) {int squareArea = stranska stran; }} |
Kot je prikazano v zgornjem primeru, je metoda 'Polygon' preobremenjena 3-krat z različnim podpisom metode, tj. Vrsta ali število parametrov je različno.
Prekoračitev metode
Prekrmiljenje metode, znano tudi kot Prekrmiljenje funkcije ali Polimorfizem časa izvajanja, je funkcija OOP, ki omogoča podrejenemu razredu, da zagotovi lastno izvedbo za metodo, definirano v nadrejenem razredu. Implementacija v podrejenem razredu preglasi definicijo metode v osnovnem razredu, pod pogojem, da mora metoda v podrejenem razredu imeti isto ime, tip podpisa in vrnitev.
Primer razveljavitve metode v C #
razred Source1 {javni void draw () {Console.Writeline ("Sem v razredu Source1"); }} Razred Source2 razširja Source1 {public void draw () {Console.Writeline ("Sem v razredu Source2"); }}1 2 3 4 5 6 7 8 9 10 | Razred Source1 {public void draw () {Konzola. Writeline ("Sem v razredu Source1"); }} Razred Source2 razširja Source1 {public void draw () {Console. Writeline ("Sem v razredu Source2"); }} |
Tukaj metoda draw v razredu Source2 preglasi metodo draw, ki je definirana v razredu Source1.
Razlika med preobremenitvijo metode in razveljavitvijo metode
- Metode Preobremenitev metode morajo imeti drugačen podpis. Pri metodi morajo imeti prevladujoče metode enak podpis.
- Funkcija Preobremenitev je »dodati« ali »razširiti« bolj na vedenje metode. Prekrmiljenje funkcije je popolnoma »spremeniti« ali »redefinirati« obnašanje metode.
- Preobremenitvena metoda se uporablja za doseganje polimorfizma časa kompilacije; prevlada metode se uporablja za doseganje polimorfizma v času izvajanja.
- V metodo / funkciji preobremenitev prevajalnik ve, kateri objekt je dodeljen kateremu razredu v času prevajanja, toda v razveljavitvi metode ta informacija ni znana do izvajalnega časa.
- Funkcija Preobremenitev poteka v istem razredu, medtem ko Preglasitev poteka v razredu, izpeljanem iz osnovnega razreda.