Кључна разлика : Преоптерећење значи имати двије методе исте класе с истим именом и са различитим типовима параметара, док оверридинг значи имати двије различите методе у истој класи с истим типовима параметара, али с различитим имплементацијама.
Прекорачење и преоптерећење метода су два концепта или технике који се користе у Јава програмским језицима. Оба концепта омогућавају програмеру да обезбеди различите имплементације за методе под истим именом. Овај чланак прави разлику између два концепта програмирања.
Преоптерећење функција или преоптерећење метода омогућава креирање неколико метода под истим именом, у истој класи, али се међусобно разликују у улазном и излазном типу функције. Једноставно се дефинира као способност једне функције да обавља различите задатке.
У преоптерећењу, имплементације метода деле исто име зато што обављају сличне задатке. Такође, преоптерећење се сматра полиморфном у природи. Функције које имају различите имплементације зависе од њихових специфицираних типова аргумената. Обично се повезује са статичким програмским језицима који намећу проверу типа у позивима функција. Такође се сматра практичним јер омогућава програмеру да напише више различитих метода у истој класи. Међутим, у преоптерећењу извршног процесора мијења се име свих преоптерећених метода, што може бити проблем.
Надјачавање метода, у објектно оријентисаном програмирању, је особина која дозвољава поткласи или подређеној класи да обезбеди специфичну имплементацију методе која је већ обезбеђена од једне од његових супер-класа или родитељских класа. Имплементација у поткласи надјачава или замењује имплементацију у родитељској класи обезбеђивањем методе под истим именом, истим параметрима или потписом, и истим повратним типом као методом у родитељској класи.
Код надјачавања метода, функције се кодирају за извршавање одређених задатака у програму. Преклапање зависи од присуства функције основне класе за њен изглед. Овде извршена функција одређена је објектом који се користи за његово позивање, тј. Ако се објекат родитељске класе користи за позивање методе, тада ће се извршити функција у родитељској класи. Преокрет је у природи полиморфан; помаже у дизајнирању програма заснованих на првом имплицитном параметру, који се може ријешити за вријеме извођења. У Јава-у постоје неки језици који дозвољавају програмеру да спријечи да се метод замијени.
Поређење између преоптерећења и поништавања:
Преоптерећење | Оверридинг | |
Дефиниција | То значи имати методе исте класе под истим именом, али свака метода има различите параметре или има исте параметре са различитим типовима и редослиједом. | То значи имати под-класу са истим методама под истим именом и тачно исти тип параметара и исти повратни тип као супер класа. |
Значење | То значи да више од једне методе имају исто име у истој класи, али имају другачији потпис. | То значи да се метода основне класе поново дефинира у изведеној класи с истим потписом. |
Понашање | Додаје или проширује понашање метода. | Она мења постојеће понашање методе. |
Полиморфизам | То је полиморфизам времена компајлирања. | То је полиморфизам извођења. |
Статичка метода | Статичка метода може бити преоптерећена. | Статичка метода се не може заменити. |
Бонд | Статиц бонд. | Динамиц бонд. |
Наслеђивање | Може или не мора да захтева наслеђивање. | Увијек захтијева насљедство. |
Удружење | Обично се повезује са статичким програмским језицима. | Обично се повезује са објектно оријентисаним програмима. |
Потпис | Методе имају другачији потпис. | Методе морају имати исти потпис. |
Брзина | То је брже него пребрзо. | Спор је у односу на преоптерећење. |
Цлассес | Не захтева више од једне класе за преоптерећење. | Потребно је најмање две класе за преоптерећење. |
Левел | Методе могу имати било који ниво приступа. | Методе имају исти или широки приступни ниво. |
Пример | Цласс Адд { инт сум (инт а, инт б) { ретурн а + б; } инт сум (инт а) { врати а + 10; } } | Цласс А // Супер Цласс { воид дисплаи (инт нум) { принт нум; } } // Класа Б наслеђује класу А Класа Б // Подкласа { воид дисплаи (инт нум) { принт нум; } } |