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 skal 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 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 "dosomething", der tager et tal som inputparameter. I dette eksempel ville kun klasse B demonstrere metode tilsidesættende, fordi dens "dosomething" -metode har den samme migThod -signatur som sin superklasse, klasse A. "Dosomething" -metoden i klasse C, på den anden side, demonstrerer overbelastning af metode, 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" Superclass -implementeringen.
Selvom metode tilsidesættelse 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. At gøre dette, javaBruger det "endelige" nøgleord, og C ++ bruger nøgleordet "const". Forebyggelse af metode, der tilsidesætter, kan være gavnlig, hvis en bestemt funktion altid skal være uændret gennem et arvtræ.
Generelt bør enkle metoder, der får små data, ikke behøver at tilsidesættes. 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 afklare, hvad hver variant af metoden gør, samt hvordan og hvorfor de adskiller sig.