Преоптерећење метода, познато и као преоптерећење функције или полиморфизам времена компајлирања, је концепт да имају два или више метода са истим именом, али различитог потписа у истом опсегу. Постоји много програмских језика који подржавају ову функцију: Ада, Ц ++, Ц #, Д и Јава.
Пример преоптерећења метода у Ц #
цласс ОверлоадСхапес {флоат Полигон (инт радијус, флоат пи) {флоат цирцлеАреа = пи * радиус *; } инт Полигон (инт дужина, инт ширина) {инт рецтанглеАреа = дужина * ширина; } инт Полигон (инт страна) {инт скуареАреа = страна * страна; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | цласс ОверлоадСхапес {флоат Полигон (инт радијус, флоат пи) {флоат цирцлеАреа = пи * радиус *; } инт Полигон (инт дужина, инт ширина) {инт рецтанглеАреа = дужина * ширина; } инт Полигон (инт страна) {инт скуареАреа = страна * страна; }} |
Као што је приказано у горњем примеру, метода 'Полигон' је преоптерећена 3 пута са различитим потписом методе, тј. Тип или број параметара су различити.
Оверридинг Метход
Прекорачење метода, познато и као Прекорачење функције или Полиморфизам времена извођења, је ООП функција која дозвољава класе подређене да обезбеде сопствену имплементацију методу дефинисаном у родитељској класи. Имплементација у подређеној класи надјачава дефиницију методе у основној класи, под условом да метода у подређеној класи треба да има исто име, потпис и тип враћања.
Пример поништавања метода у Ц #
цласс Соурце1 {публиц воид драв () {Цонсоле.Врителине ("Ја сам у класи Соурце1"); }} Разред Соурце2 се проширује Соурце1 {публиц воид драв () {Цонсоле.Врителине ("Ја сам у класи Соурце2"); }}1 2 3 4 5 6 7 8 9 10 | цласс Соурце1 {публиц воид драв () {Цонсоле. Врителине ("Ја сам у класи Соурце1"); }} Разред Соурце2 ектендс Соурце1 {публиц воид драв () {Цонсоле. Врителине ("Ја сам у класи Соурце2"); }} |
Овде, метода драв у класи Соурце2 надјачава методу драв која је дефинисана у класи Соурце1.
Разлика између преоптерећења методе и превазилажења метода
- У методама преоптерећења метода мора имати другачији потпис. У методи, методе надјачавања морају имати исти потпис.
- Преоптерећење функције је „додавање“ или „проширење“ на понашање методе. Преклапање функција је да се потпуно промени или редефинише понашање методе.
- Преоптерећење метода се користи за постизање полиморфизма времена компајлирања; Прекорачење метода се користи за постизање полиморфизма у времену извођења.
- У методу / функцији преоптерећење компајлер зна који је објект додијељен којој класи у вријеме компилације, али у методу надјачавања ова информација није позната до времена извођења.
- Функција Преоптерећења се одвија у истој класи, док се Оверридинг одвија у класи изведеној из основне класе.