Vad är en statisk metod?
En objektorienterad datorprogrammeringsmetod som deklareras i en klass men inte är beroende av någon särskild inställning 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 ingår i och inte till något objekt som instanseras från den klassen. De kallas ofta klassmetoder .
Klassens bokstavliga namn används normalt för att komma åt en statisk metod istället för att hänvisa till den med namnet på ett instanserat 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örväxla 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 åtkomst till metoden, men det finns inget behov av att instansera klassen den ingår i. Nyttiga klasser inställs normalt inte i objekt. Det skulle vara ovanligt att en verktygsmetod har 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, instansmetoder och statiska metoder. Statiska metoder kan inte direkt komma åt instansvariabler och instansmetoder. På grund av typen 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 viktig nackdel med statiska metoder uppstår under arv när polymorfism används. Så länge den statiska föräldrsmetoden inte förklaras slutgiltig, kan samma statiska barnmetod kodas i barnklassen som om den åsidosätts. Detta kallas döljande istället för att åsidosätta eftersom en statisk metod inte kan åsidosättas.
När dölja används, om den överordnade statiska metoden nås med klassnamnet, kommer överordnadsmetoden att användas. Om den statiska metoden för åsidosatt barn nås med hjälp av objektnamnet kommer den åsidosatta metoden att användas. Problemet uppstår när ett barnobjekt är uppskattat som förälder. I det här fallet kommer ett samtal till den statiska metoden för uppskattat barn att använda föräldermetoden i stället för den förväntade metoden. Med sann polymorfism skulle barnmetoden vara den som aktiveras efter en uppskjutning.