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