Skip to main content

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 kalles 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 som dosomething som tar et tall som en inngangsparameter.I dette eksemplet ville bare klasse B demonstrere metode som er overordnet, fordi dens dosomething -metode har samme metodesignatur 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 superklassens implementering.

Selv om metodens overstyring 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.For å gjøre dette bruker Java det endelige nøkkelordet, og C ++ bruker Const -nøkkelordet.Forebygging av metodeoverstyring kan være gunstig hvis en bestemt funksjon alltid skal være uendret i hele et arvetre.

Generelt sett må enkle metoder som får små data, ikke trenge å bli overstyrt.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.