Превладавање над Преоптерећењем
Метода Оверридинг и метода Оверлоадинг два су концепта / технике / карактеристике које се налазе у неким програмским језицима. Оба концепта омогућавају програмеру да пружа различите имплементације за методе с истим називом. Поништавање метода омогућава програмеру да пружи алтернативну имплементацију унутар подкласе методи која је већ дефинисана унутар његове супер класе. Преоптерећење метода омогућава програмеру да пружа различите имплементације за више метода са истим називом (унутар исте класе).
Шта је превладавање?
Као што је горе поменуто, класа може проширити супер класу или родитељску класу, у објектно оријентисаним програмским језицима. Дечија класа може имати сопствене методе или, по жељи, може имати сопствене имплементације у методе већ дефинисане у својој родитељској класи (или једној од својих великих родитељских класа). Када се ово последње догоди, то се зове прегласавањем метода. Другим речима, ако дечија класа пружа имплементацију методи са истим типом потписа и повратка као метода која је већ дефинисана у једној од његових родитељских класа, каже се да ће се ова метода надјачати (заменити) имплементацијом дечије класе . Дакле, ако у класи постоји прекидан метод, рунтиме систем ће морати да одлучи која ће се метода имплементирати. Овај проблем се решава гледањем тачне врсте објекта који се користи за његово позивање. Ако се објект родитељске класе користи за позивање преписане методе, тада се користи имплементација у родитељској класи. Слично томе, ако се ради о предмету дечије класе који се користи, тада се користи и имплементација дечије класе. Савремени програмски језици као што су Јава, Еифелл, Ц ++ и Питхон омогућавају прегласавање метода.
Шта је преоптерећење?
Преоптерећење метода је функција коју пружају неки програмски језици за креирање више метода са истим именом, али са различитим врстама улаза и излаза. У модерним програмским језицима као што су Јава, Ц #, Ц ++ и ВБ.НЕТ, ова функција је доступна. Можете преоптеретити методу креирањем друге методе са истим именом, али с другачијим потписом методе или другом врстом повратка (или обоје). На пример, ако имате метход1 (типе1 т1) и метход1 (типе2 т2) унутар исте класе, они се преоптерећују. Тада ће систем морати да одлучи који ће бити изведен када се позове. Ова диференцијација се врши гледањем врсте параметара који су прослеђени методи. Ако је аргумент типа 1, позива се прва имплементација, док је ако је типа 2, а друга се зове.
Која је разлика између прегласавања и преоптерећења?
Иако се превладавање метода и преоптерећење метода користе како би се добила метода са различитим имплементацијама, постоје кључне разлике између ова два концепта / технике. Пре свега, испитаници метода превладавања увек остају унутар различитих класа, док субјекти преоптерећења метода остају унутар исте класе. То значи да је прегласавање могуће само у објектно оријентисаним програмским језицима који омогућава наследство, док је преоптерећење могуће и на језику који није оријентисан. Другим речима, превладавате методу у супер класи, али преоптерећујете методу унутар сопствене класе.
Друга разлика је у томе што поништене методе имају исти назив методе, потпис методе и тип повратка, али преоптерећене методе морају се разликовати или у потпису или у повратном типу (име треба бити исто). Да би се направила разлика између две пребројане методе, користи се тачан тип објекта који се користи за позивање метода које се користе, док се за разлику између две преоптерећене методе користе типови параметара. Друга кључна разлика је да се преоптерећење решава у време компилације, док се прегласавање решава током извођења.