Wat is de methode voordragen?
Methode die overschrijven wordt gebruikt in objectgeoriënteerde programmering binnen een overervinghiërarchie, en het treedt op wanneer een methode gedefinieerd in een superklasse opnieuw wordt gedefinieerd in een subklasse. Gewoonlijk doet de subklasmethode iets anders dan de superclass -methode of breidt het uit op een mogelijkheden van de superclass, maar dit hoeft niet het geval te zijn. Methode -overdreven vindt plaats wanneer een superclass -methode opnieuw wordt gedefinieerd in een subklasse, ongeacht de inhoud van de opnieuw gedefinieerde methode. De reddefined -methode -handtekeningen moeten exact hetzelfde zijn.
kan bijvoorbeeld een klasse A een methode bevatten genaamd "Dosomething", en deze methode heeft geen invoerparameters. Bovendien kunnen klassen B en C subklassen van klasse A. Klasse B zijn, kunnen een methode bevatten die "dosomething" wordt genoemd, die geen invoerparameters nodig heeft, en klasse C kan een methode "dosomething" bevatten die een nummer als invoerparameter nodig heeft. In dit voorbeeld zou alleen Klasse B methode overschrijden, omdat de methode de "dosomething" -methode dezelfde mij heeftThod -handtekening als zijn superclass, klasse A. De methode "dosomething" in klasse C, anderzijds, demonstreert methode overbelasting omdat het een volledig nieuwe methode creëert.
Virtuele overerving in C ++ is een ander voorbeeld van methode die overschrijdt. Virtuele methoden in superclasses kunnen al dan niet worden geïmplementeerd, maar elke definitie van subklasse daarvan is een exemplaar van methode die overschrijdt. Wanneer een methode in een subklasse wordt opgeheven, wordt de methode van de superklasse niet opgeroepen tenzij deze expliciet wordt opgeroepen. Deze specifieke manier om een overschreven methode aan te roepen wordt vaak gezegd om de implementatie van de superclass te "verbergen".
Hoewel het overschrijven van de methode zeer flexibel is, kunnen niet alle methoden worden opgeheven, en er zijn momenten waarop deze stijfheid de voorkeur kan hebben. In zowel Java als C ++ kunnen specifieke trefwoorden worden toegepast in methodesignaturen om te voorkomen dat een methode in een subklasse wordt opgeheven. Om dit te doen, JavaGebruikt het "laatste" trefwoord en C ++ gebruikt het trefwoord "const". Het voorkomen van methode die overschrijven kan gunstig zijn als een bepaalde functie altijd ongewijzigd moet zijn in een erfenisstructuur.
In het algemeen hoeven eenvoudige methoden die kleine stukjes gegevens krijgen, niet moeten worden opgeheven. Gevallen die de meeste profiteren van het overschrijven zijn wanneer een subklasse ernaar streeft om functionaliteit toe te voegen aan een superclass -methode zonder een geheel nieuwe methode te maken om dit te doen. Ongewone gevallen waarin een methode volledig moet worden herschikt voor een specifiek type object, kunnen ook profiteren van deze techniek. Wanneer een methode wordt opgeheven, is het belangrijk dat de programmeur zowel de superclass- als de subklasmethoden adequaat commentaar geeft. Idealiter zouden deze opmerkingen moeten verduidelijken wat elke variant van de methode doet, evenals hoe en waarom ze verschillen.