Skip to main content

Hvad er metoden tilsidesættende?

Metode tilsidesættende bruges i objektorienteret programmering inden for et arvshierarki, og det forekommer, når en metode defineret i en superklasse omdefineres i en underklasse.Normalt gør underklasse -metoden noget andet end Superclass -metoden eller udvides på en kapacitet af superklassen, men dette behøver ikke at være tilfældet.Metode, der tilsidesætter, opstår, når en superklassemetode omdefineres i en underklasse, uanset indholdet af den omdefinerede metode.De omdefinerede metodesignaturer må være nøjagtigt den samme.

For eksempel kan en klasse A muligvis indeholde en metode kaldet dosomething, og denne metode tager ingen inputparametre.Derudover kan klasser B og C muligvis være underklasser af klasse A. Klasse B kan indeholde en metode kaldet dosomething, som ikke tager nogen inputparametre, og klasse C kan indeholde en metode, der tager et nummer som en inputparameter.I dette eksempel ville kun klasse B demonstrere metode, der er tilsidesættende, fordi dens dosomething -metode har den samme metodesignatur som dens superklasse, klasse A. DoSomething -metoden i klasse C, på den anden side, demonstrerer metodeoverbelastning, fordi den skaber en helt ny metode.

Virtuel arv i C ++ er et andet eksempel på metode tilsidesættende.Virtuelle metoder i superklasser kan eller måske ikke implementeres, men enhver underklasse -definition af dem er et eksempel på metode tilsidesættende.Når en metode tilsidesættes i en underklasse, kaldes superklassens metode ikke, medmindre den påberåbes eksplicit.Denne specifikke måde at kalde en tilsidesat metode siges ofte at skjule superklassen implementering.

Selvom metode tilsidesætter er meget fleksibel, kan ikke alle metoder tilsidesættes, og der er tidspunkter, hvor denne stivhed muligvis kan foretrækkes.I både Java og C ++ kan specifikke nøgleord anvendes i metodesignaturer for at forhindre, at en metode tilsidesættes i en underklasse.For at gøre dette bruger Java det endelige nøgleord, og C ++ bruger CONST -nøgleordet.Forebyggelse af metode, der tilsidesætter, kan være fordelagtig, hvis en bestemt funktion altid skal være uændret i et arvtræ.

Generelt bør enkle metoder, der får små data, ikke behøver at blive tilsidesat.Tilfælde, der har tendens til at drage mest fordel af at tilsidesætte, er, når en underklasse sigter mod at tilføje funktionalitet til en superklasse -metode uden at oprette en helt ny metode til at gøre det.Usædvanlige tilfælde, hvor en metode skal redoneres fuldstændigt for en bestemt type objekt, kan også drage fordel af denne teknik.Hver gang en metode tilsidesættes, er det vigtigt for programmereren at kommentere både superklasse- og underklasse -metoderne.Ideelt set skal disse kommentarer tydeliggøre, hvad hver variant af metoden gør, samt hvordan og hvorfor de adskiller sig.