Замяна срещу претоварване
Методът Overriding и методът Overloading са две концепции / техники / функции, открити в някои езици за програмиране. И двете концепции позволяват на програмиста да предоставя различни реализации за методи с едно и също име. Заместването на метода позволява на програмиста да осигури алтернативно изпълнение в рамките на подклас на метод, който вече е дефиниран в неговия супер клас. Претоварването на метода позволява на програмиста да предоставя различни реализации на множество методи с едно и също име (в рамките на един и същи клас).
Какво е заместване?
Както бе споменато по-горе, клас може да разшири супер клас или родителски клас в обектно ориентирани програмни езици. Детски клас може да има свои собствени методи или по желание може да има свои собствени реализации на методи, вече дефинирани в неговия родителски клас (или един от неговите големи родителски класове). Така че, когато последното се случи, това се нарича метод замяна. С други думи, ако дъщерният клас осигурява реализация на метод със същия тип подпис и връщане като метод, който вече е дефиниран в един от неговите родителски класове, се казва, че този метод е заменен (заменен) от изпълнението на дъщерния клас. Така че, ако в клас има заменен метод, системата за изпълнение ще трябва да реши кой метод за изпълнение да се използва. Този проблем се решава чрез преглед на точния тип обект, който се използва за извикването му. Ако обект от родителския клас се използва за извикване на заменения метод, тогава се използва изпълнението в родителския клас. По същия начин, ако се използва обект от дъщерния клас, тогава се използва изпълнението на дъщерния клас. Съвременните езици за програмиране като Java, Eifell, C ++ и Python позволяват заместване на методите.
Какво е претоварване?
Претоварването на метода е функция, предоставена от някои програмни езици за създаване на повече от един метод с едно и също име, но с различни видове вход и изход. В съвременните езици за програмиране като Java, C #, C ++ и VB. NET тази функция е налична. Можете да претоварите метод, като създадете друг метод със същото име, но с различен подпис на метод или различен тип връщане (или и двата). Например, ако имате метод1 (тип1 t1) и метод1 (тип2 t2) в същия клас, тогава те са претоварени. Тогава системата ще трябва да реши кой да бъде изпълнен, когато бъде извикан. Това разграничаване се прави чрез разглеждане на типа на параметрите, предадени в метода. Ако аргументът е от тип1, тогава се извиква първата реализация, докато ако е от тип2, тогава се извиква втората реализация.
Каква е разликата между Замяна и Претоварване?
Въпреки че заменянето на метода и претоварването на метода се използват за предоставяне на метод с различни реализации, има ключови разлики между тези две концепции / техники. На първо място, субектите на метода, които преобладават, винаги остават в различни класове, докато предметите на претоварване на метода остават в един и същи клас. Това означава, че заместването е възможно само в обектно-ориентирани програмни езици, които позволяват наследяване, докато претоварването може да бъде налично и в не-обектно-ориентиран език. С други думи, вие замествате метод в супер класа, но претоварвате метод в собствения си клас.
Друга разлика е, че заменените методи имат едно и също име на метода, подпис на метода и типа на връщане, но претоварените методи трябва да се различават или в подписа, или в типа на връщане (името трябва да е същото). За да се направи разлика между два заменени метода, се използва точният тип обект, който се използва за извикване на използваните идентификатори, докато за разграничаване между два претоварени метода се използват типовете параметри. Друга ключова разлика е, че претоварването се разрешава по време на компилиране, докато заместването се решава по време на изпълнение.