Verschil tussen Overriding en Overloading

Anonim

Overlijden tegen overbelasting

De methode Overriding en methode Overbelasting zijn twee concepten / technieken / eigenschappen die in sommige programmeertalen voorkomen. Beide concepten staan ​​de programmeur in staat om verschillende implementaties te geven voor methoden met dezelfde naam. Met de overweging van de methode kan de programmeur een alternatieve implementatie in een subklasse leveren aan een methode die al in zijn superklasse is gedefinieerd. Met overbelasting van methoden kan de programmeur verschillende implementaties aan meerdere methoden geven met dezelfde naam (binnen dezelfde klasse).

Wat is Overriding?

Zoals hierboven vermeld kan een klas een superklasse of een ouderklasse, in objectgeoriënteerde programmeertaal, uitbreiden. Een kinderklasse kan zijn eigen methoden hebben, of kunnen optioneel zijn eigen implementaties hebben op methoden die al zijn gedefinieerd in zijn ouderklasse (of een van zijn grootouderklassen). Dus wanneer het laatste gebeurt, heet het methode twijfelachtig. Met andere woorden, als de kinderklasse een implementatie geeft aan een methode met dezelfde handtekening en retour-type als een methode die al in een van zijn ouderklasse is gedefinieerd, wordt deze methode gezegd dat deze wordt overschreden (vervangen) door de implementatie van de kinderklasse. Dus, als er een overdreven methode in een klas 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 gebruikt wordt om het te gebruiken. Als een voorwerp van de ouderklasse wordt gebruikt om de overgedragen methode te gebruiken, wordt de implementatie in de ouderklasse gebruikt. Evenzo, als het een voorwerp is van de kinderklasse die wordt gebruikt, dan wordt de implementatie van de kindklasse gebruikt. Moderne programmeertalen zoals Java, Eifell, C ++ en Python kunnen methode overwegen.

Wat is overbelasting?

Overbelasting van methoden is een functie die door sommige programmeertalen wordt geleverd om meer dan één methode te maken met dezelfde naam, maar met verschillende invoer- en uitvoertypes. In moderne programmeertalen zoals Java, C #, C ++ en VB. NET, deze functie is beschikbaar. U kunt een methode overbelasten door een andere methode te creëren met dezelfde naam maar met een andere methode handtekening of een ander retour type (of beide). Als u bijvoorbeeld methode1 (type1 t1) en methode1 (type2 t2) binnen dezelfde klas heeft, dan zijn ze overbelast. Dan zal het systeem moeten beslissen welke uitvoering moet worden uitgevoerd als het wordt genoemd. Deze differentiatie wordt gemaakt door te kijken naar het type van de parameter (en) die in de methode is doorgegeven. Als het argument van type1 is, dan wordt de eerste implementatie genoemd, maar als het van type2 is, dan wordt de tweede implementatie genoemd.

Wat is het verschil tussen Overriding en Overloading?

Hoewel methodologische overwegingen en overbelasting van methoden gebruikt worden om een ​​methode te verschaffen met verschillende implementaties, zijn er belangrijke verschillen tussen deze twee concepten / technieken. Allereerst blijven subjecten van methodologische overwegingen altijd in verschillende klassen, terwijl onderwerpen van overbelasting van methoden binnen dezelfde klasse blijven. Dat betekent dat overheersing alleen mogelijk is in object georiënteerde programmeertaal die erfenis mogelijk maakt, terwijl overbelasting ook in een niet objectgerichte taal beschikbaar kan zijn. Met andere woorden, u overschrijft een methode in de superklasse, maar u overbelast een methode in uw eigen klas.

Een ander verschil is dat overschreden methoden dezelfde methode hebben, methode handtekening en retour type, maar overbelaste methoden moeten verschillen in de handtekening of het retour type (de naam moet hetzelfde zijn). Om te onderscheiden tussen twee overrideerde methoden, worden de typen van de parameters gebruikt voor het exacte type object dat gebruikt wordt om de gebruikte methoden te gebruiken, terwijl er tussen twee overbelaste methoden wordt onderscheiden. Een ander belangrijk verschil is dat overbelasting op compileertijd is opgelost, terwijl twijfel wordt opgelost tijdens runtime.