Diferència entre anul·lació i sobrecàrrega

Diferència entre anul·lació i sobrecàrrega
Diferència entre anul·lació i sobrecàrrega

Vídeo: Diferència entre anul·lació i sobrecàrrega

Vídeo: Diferència entre anul·lació i sobrecàrrega
Vídeo: Саймон Синек: Как выдающиеся лидеры вдохновляют действовать 2024, De novembre
Anonim

Anul·lació vs sobrecàrrega

El mètode Overriding i el mètode Overloading són dos conceptes/tècniques/funcions que es troben en alguns llenguatges de programació. Ambdós conceptes permeten al programador proporcionar diferents implementacions per a mètodes amb el mateix nom. La substitució de mètodes permet al programador proporcionar una implementació alternativa dins d'una subclasse a un mètode ja definit dins de la seva superclasse. La sobrecàrrega de mètodes permet que el programador proporcioni diferents implementacions a diversos mètodes amb el mateix nom (dins de la mateixa classe).

Què està anul·lant?

Com s'ha esmentat anteriorment, una classe pot estendre una superclasse o una classe pare, en llenguatges de programació orientats a objectes. Una classe fill pot tenir els seus propis mètodes o, opcionalment, pot tenir les seves pròpies implementacions a mètodes ja definits a la seva classe pare (o una de les seves classes pares). Així, quan això últim passa, s'anomena substitució del mètode. En altres paraules, si la classe secundària proporciona una implementació a un mètode amb la mateixa signatura i tipus de retorn que un mètode ja definit en una de les seves classes pares, es diu que aquest mètode està substituït (substituït) per la implementació de la classe secundària.. Per tant, si hi ha un mètode anul·lat en una classe, el sistema d'execució haurà de decidir quin mètode s'utilitza. Aquest problema es resol mirant el tipus exacte d'objecte que s'utilitza per invocar-lo. Si s'utilitza un objecte de la classe pare per invocar el mètode anul·lat, s'utilitza la implementació a la classe pare. De la mateixa manera, si s'utilitza un objecte de la classe fill, s'utilitza la implementació de la classe fill. Els llenguatges de programació moderns com Java, Eifell, C++ i Python permeten substituir mètodes.

Què és la sobrecàrrega?

La sobrecàrrega de mètodes és una característica proporcionada per alguns llenguatges de programació per crear més d'un mètode amb el mateix nom, però amb diferents tipus d'entrada i sortida. En llenguatges de programació moderns com Java, C, C++ i VB. NET, aquesta funció està disponible. Podeu sobrecarregar un mètode creant un altre mètode amb el mateix nom però amb una signatura de mètode diferent o un tipus de retorn diferent (o ambdós). Per exemple, si teniu method1 (type1 t1) i method1 (type2 t2) dins de la mateixa classe, llavors estan sobrecarregats. Aleshores, el sistema haurà de decidir quin s'executarà quan es cridi. Aquesta diferenciació es fa mirant el tipus de paràmetre(s) passat(s) al mètode. Si l'argument és de tipus 1, llavors es crida la primera implementació, mentre que si és de tipus 2, llavors es crida la segona implementació.

Quina diferència hi ha entre la substitució i la sobrecàrrega?

Tot i que la substitució de mètodes i la sobrecàrrega de mètodes s'utilitzen per proporcionar un mètode amb diferents implementacions, hi ha diferències clau entre aquests dos conceptes/tècniques. En primer lloc, els subjectes de sobrecàrrega de mètodes es mantenen sempre dins de classes diferents, mentre que els subjectes de sobrecàrrega de mètodes romanen dins de la mateixa classe. Això vol dir que la substitució només és possible en llenguatges de programació orientats a objectes que permeten l'herència, mentre que la sobrecàrrega també pot estar disponible en un llenguatge no orientat a objectes. En altres paraules, sobreescriu un mètode a la superclasse però sobrecarregueu un mètode dins de la vostra pròpia classe.

Una altra diferència és que els mètodes anul·lats tenen el mateix nom de mètode, signatura de mètode i tipus de retorn, però els mètodes sobrecarregats han de diferir en la signatura o en el tipus de retorn (el nom hauria de ser el mateix). Per diferenciar entre dos mètodes anul·lats, el tipus exacte d'objecte que s'utilitza per invocar l'identificador de mètodes utilitzat, mentre que per diferenciar entre dos mètodes sobrecarregats s'utilitzen els tipus de paràmetres. Una altra diferència clau és que la sobrecàrrega es resol en temps de compilació, mentre que la substitució es resol en temps d'execució.

Recomanat: