Skip to main content

Vad är en statisk metod?

En objektorienterad datorprogrammeringsmetod som deklareras i en klass men inte är beroende av någon speciell instans av den klassen kallas en statisk metod.De flesta programmeringsspråk inkluderar nyckelordet statisk i deklarationen av en metod för att göra en metod statisk.Dessa metoder tillhör strikt den klass de finns i och inte till något objekt som är instanserat från den klassen.De kallas ofta Klassmetoder .

Det bokstavliga namnet på klassen används normalt för att få tillgång till en statisk metod istället för att hänvisa till den med namnet på ett instantierat objekt.Det är tillåtet i Java att använda objektnamn för att hänvisa till dessa metoder, men det är starkt avskräckt.Om ett objektnamn används kan en person som läser koden förvirra en av dessa metoder med en instansmetod.

Statiska metoder används ofta i verktygsklasser som inte beror på instansvariabler från någon speciell klass.De används också när en programmerare behöver komma åt metoden men det finns inget behov av att instansera den klass som den finns i. Verktygsklasser är normalt inte instanserade i objekt.Det skulle vara ovanligt att en verktygsmetod har ett behov av att ändra objektinformation.En metod från klassen java.lang.math, såsom POW (), skulle vara ett exempel på hur denna typ av metod skulle användas i en verktygsklass.

instansmetoder kan direkt komma åt instansvariabler, statiska variabler, instansmetoderoch statiska metoder.Statiska metoder kan inte direkt komma åt instansvariabler och instansmetoder.På grund av arten av instansmetoder som har bättre tillgång till klassmedlemmar än en statisk metod, är instansmetoder den typ av metoder som normalt används i vanliga klasser.

En större nackdel med statiska metoder inträffar under arv när polymorfism används.Så länge den statiska överordnade metoden inte förklaras slutlig, kan samma barns statiska metod kodas i barnklassen som om den åsidosätts.Detta kallas tekniskt gömma sig istället för att åsidosätta eftersom en statisk metod inte kan åsidosättas.

När gömningen används, om modern statisk metod nås med klassnamnet, kommer modermetoden att användas.Om den åsidosatta barnstatiska metoden nås med objektnamnet kommer den åsidosatta barnmetoden att användas.Problemet uppstår när ett barnobjekt är upsa som förälder.I det här fallet kommer ett samtal till den upcastade barnstatiska metoden att använda modermetoden istället för den förväntade barnmetoden.Med sann polymorfism skulle barnmetoden vara den som aktiveras efter en upcast.