Verschil tussen overriding en overbelasting

Overschrijven versus overbelasting

De methode Overriding en methode Overloading zijn twee concepten / technieken / functies die in sommige programmeertalen voorkomen. Beide concepten stellen de programmeur in staat om verschillende implementaties te bieden voor methoden met dezelfde naam. Door de methode te overschrijven, kan de programmeur een alternatieve implementatie binnen een subklasse bieden voor een methode die al in de superklasse is gedefinieerd. Met methode-overloading kan de programmeur verschillende implementaties bieden voor meerdere methoden met dezelfde naam (binnen dezelfde klasse).

Wat is opheffen?

Zoals hierboven vermeld, kan een klasse een superklasse of een bovenliggende klasse uitbreiden in objectgeoriënteerde programmeertalen. Een onderliggende klasse kan zijn eigen methoden hebben of kan optioneel zijn eigen implementaties hebben voor methoden die al zijn gedefinieerd in de bovenliggende klasse (of een van de grote bovenliggende klassen). Dus wanneer dit laatste gebeurt, wordt dit methode-overschrijven genoemd. Met andere woorden, als de onderliggende klasse een implementatie biedt voor een methode met dezelfde handtekening en retourneringstype als een methode die al is gedefinieerd in een van de bovenliggende klassen, wordt gezegd dat die methode wordt vervangen (vervangen) door de implementatie van de onderliggende klasse . Dus als er een overschreven methode in een klasse is, zal het runtime-systeem moeten beslissen welke methode-implementatie wordt gebruikt. Dit probleem is opgelost door te kijken naar het exacte type object dat wordt gebruikt om het aan te roepen. Als een object van de bovenliggende klasse wordt gebruikt om de overschreven methode aan te roepen, wordt de implementatie in de bovenliggende klasse gebruikt. Evenzo, als het een object is van de onderliggende klasse die wordt gebruikt, wordt de implementatie van de onderliggende klasse gebruikt. Moderne programmeertalen zoals Java, Eifell, C ++ en Python kunnen door de methode worden vervangen.

Wat is overbelast?

Overbelasting van de methode is een functie die door sommige programmeertalen wordt geboden om meer dan één methode met dezelfde naam te maken, maar met verschillende invoer- en uitvoertypen. In moderne programmeertalen zoals Java, C #, C ++ en VB.NET is deze functie beschikbaar. U kunt een methode overbelasten door een andere methode met dezelfde naam te maken, maar met een andere methodehandtekening of een ander retourtype (of beide). Als u bijvoorbeeld methode 1 (type1 t1) en methode1 (type2 t2) in dezelfde klasse hebt, zijn ze overbelast. Dan zal het systeem moeten beslissen welke uitgevoerd moet worden wanneer het wordt opgeroepen. Deze differentiatie wordt gemaakt door te kijken naar het type parameter (s) dat is doorgegeven aan de methode. Als het argument van type 1 is, wordt de eerste implementatie aangeroepen, terwijl als het van het type 2 is, de tweede implementatie wordt aangeroepen.

Wat is het verschil tussen Overriding en Overloading?

Hoewel methodeoverriding en methode-overbelasting worden gebruikt om een ​​methode met verschillende implementaties te bieden, zijn er belangrijke verschillen tussen deze twee concepten / technieken. Ten eerste blijven onderwerpen van methode-overriding altijd binnen verschillende klassen, terwijl onderwerpen van methode-overbelasting binnen dezelfde klasse blijven. Dat betekent dat dwingen alleen mogelijk is in objectgeoriënteerde programmeertalen die overerving mogelijk maken, terwijl overbelasting ook beschikbaar kan zijn in een niet-objectgerichte taal. Met andere woorden, u overschrijft een methode in de superklasse, maar u overbelast een methode binnen uw eigen klasse.

Een ander verschil is dat overschreven methoden dezelfde naam van de methode, methodehandtekening en het retourneringstype hebben, maar overladen methoden moeten verschillen in de handtekening of het retourneringstype (de naam moet hetzelfde zijn). Om onderscheid te maken tussen twee overschreven methoden, het exacte type object dat wordt gebruikt om de gebruikte methode-id aan te roepen, terwijl voor het onderscheiden van twee overbelaste methoden de typen parameters worden gebruikt. Een ander belangrijk verschil is dat overbelasting tijdens het compileren wordt opgelost, terwijl de prioriteit tijdens runtime wordt opgeheven.