Wat is overbelasting van de methode?
Overbelasting van methoden is een functie in de meeste objectgeoriënteerde programmeertalen waarin twee of meer methoden dezelfde naam hebben maar verschillende parameters hebben. In het bijzonder zijn het aantal, het gegevenstype en / of de volgorde van de parameters verschillend. Wanneer de code wordt gecompileerd, wordt de juiste methode automatisch geselecteerd op basis van hoe deze wordt aangeroepen. Methoden worden in sommige programmeertalen ook wel functies genoemd, dus overbelasting van methoden wordt soms functie-overbelasting genoemd.
Een eenvoudig voorbeeld van methode-overbelasting zou een methode zijn die de oppervlakte van een vierkant berekent. Het kan worden gedefinieerd als getArea (Square s). Deze methode kan worden overbelast om het gebied van de cirkel extra te berekenen door de methode getArea (cirkel c) toe te voegen.
De primaire vereiste voor overbelasting van de methode is dat de methoden dezelfde naam hebben. Hun methode handtekeningen - de methode naam, het aantal parameters en de parameter gegevenstypen - zouden anders uniek moeten zijn. Op deze manier kan de compiler bepalen welke methode moet worden uitgevoerd.
Constructors, de methoden die worden gebruikt om objecten te instantiëren, zijn vaak overbelast. Dit wordt gedaan om een object met niet-standaardwaarden te initialiseren. Een werknemerobject met twee velden (naam en geboortedatum of dob) kan bijvoorbeeld de volgende overbelaste constructors hebben: Werknemer (), Werknemer (naam) en Werknemer (naam, dob). De eerste constructor maakt een werknemersobject met lege naam- en dob-velden. De tweede stelt het naamveld in, maar laat het dob-veld leeg en de derde definieert zowel de naam- als de dob-velden.
Overbelasting van de methode wordt meestal gedaan om meer dan één methode logisch als een enkele methode te laten verschijnen. In het voorbeeld van getArea (), terwijl er fysiek twee methoden zijn, krijgt de beller één enkele logische methode getArea () te zien. Op deze manier kan getArea () worden uitgebreid om aan andere vormen te werken - driehoeken, trapezoïden, enzovoort - terwijl het zichzelf nog steeds logisch presenteert als een enkele methode.
Methoden worden ook overbelast om achterwaartse compatibiliteit te behouden. Een methode die een complexe berekening uitvoert, zou een nieuwe vereiste kunnen krijgen om optioneel dezelfde berekening met een kleine wijziging uit te voeren. Er is een nieuwe parameter toegevoegd aan de methode die bepaalt hoe de berekening moet worden uitgevoerd - op de oude manier of op de nieuwe manier.
Om te voorkomen dat u alle gevallen waarin de methode wordt aangeroepen moet vinden en de nieuwe parameter moet toevoegen, kan de methode worden overbelast. De nieuwe methode heeft de oude handtekening en wordt aangeroepen door de bestaande code. Het bevat zelf geen logica en roept eenvoudigweg de gewijzigde methode aan en geeft standaard de "oude manier" door voor de nieuwe parameter. Nieuwe code roept de gewijzigde methode aan en geeft de nieuwe parameter door met de juiste waarde, oude manier of nieuwe manier.
Overbelasting van methoden is een soort polymorfisme, waarbij dezelfde logische methode in de praktijk op meerdere manieren kan worden gebruikt. Methode overbelasting is niet hetzelfde als methode overschrijven. Methode overschrijven is waar de definitie van een methode in een bovenliggende klasse wordt gewijzigd door een onderliggende klasse. In dit geval hebben beide methoden dezelfde handtekening.