Hva er metoden overstyrer?

Metode som overstyres brukes i objektorientert programmering i et arvehierarki, og det oppstår når en metode definert i en superklasse omdefineres i en underklasse. Vanligvis gjør underklasse -metoden noe annerledes enn superklasse -metoden eller utvider en mulighet for superklassen, men dette trenger ikke å være tilfelle. Metode som overstiger oppstår når en superklasse -metode omdefineres i en underklasse, uavhengig av innholdet i den omdefinerte metoden. De omdefinerte metodesignaturene må være nøyaktig den samme.

For eksempel kan en klasse A inneholde en metode som heter "DoSomething", og denne metoden tar ingen inngangsparametere. I tillegg kan klasse B og C være underklasser i klasse A. Klasse B kan inneholde en metode som kalles "DoSomething", som ikke tar noen inngangsparametere, og klasse C kan inneholde en metode "DoSomething" som tar et tall som en inngangsparameter. I dette eksemplet ville bare klasse B demonstrere metode som overstyrer, fordi dens "doSomething" -metode har den samme MEthod -signatur som superklasse, klasse A. "DoSomething" -metoden i klasse C, derimot, demonstrerer metodeoverbelastning fordi den skaper en helt ny metode.

Virtuell arv i C ++ er et annet eksempel på overstyring av metoden. Virtuelle metoder i superklasser kan kanskje ikke implementeres, men enhver definisjon av underklasse av dem er en forekomst av metode som overstyrer. Når en metode blir overstyrt i en underklasse, kalles ikke metoden for superklassen med mindre den påberopes eksplisitt. Denne spesifikke måten å kalle en overstyrt metode sies ofte å "skjule" superklasseimplementeringen.

Selv om metodeoverstyring er veldig fleksibel, kan ikke alle metoder overstyres, og det er tider hvor denne stivheten kan være å foretrekke. I både Java og C ++ kan spesifikke nøkkelord brukes i metodesignaturer for å forhindre at en metode blir overstyrt i en underklasse. Å gjøre dette, javaBruker det "endelige" nøkkelordet, og C ++ bruker nøkkelordet "const". Forebygging av metodeoverstyring kan være gunstig hvis en bestemt funksjon alltid skal være uendret i hele et arvetre.

Generelt sett bør enkle metoder som får små data, ikke trenge å overstyres. Tilfeller som har en tendens til å dra mest nytte av å overstyre er når en underklasse tar sikte på å legge funksjonalitet til en superklasse -metode uten å lage en helt ny metode for å gjøre det. Uvanlige tilfeller der en metode må gjøres fullstendig om for en bestemt type objekt, kan også dra nytte av denne teknikken. Hver gang en metode blir overstyrt, er det viktig for programmereren å kommentere både superklasse- og underklasse -metodene. Ideelt sett bør disse kommentarene avklare hva hver variant av metoden gjør, samt hvordan og hvorfor de er forskjellige.

ANDRE SPRÅK