Hva er en statisk metode?
En objektorientert datamaskinprogrammeringsmetode som er deklarert i en klasse, men ikke er avhengig av noen spesiell instantiering av den klassen, kalles en statisk metode. De fleste programmeringsspråk inkluderer nøkkelordet statisk i erklæringen av en metode for å gjøre en metode statisk. Disse metodene hører strengt tatt til klassen de er i og ikke til noen gjenstander som er innstilt fra den klassen. De blir ofte referert til som klassemetoder .
Det bokstavelige navnet på klassen brukes vanligvis til å få tilgang til en statisk metode i stedet for å henvise til den med navnet på et øyeblikkelig objekt. Det er tillatt i Java å bruke objektnavn for å referere til disse metodene, men det frarådes sterkt. Hvis et objektnavn brukes, kan en person som leser koden forvirre en av disse metodene med en forekomstmetode.
Statiske metoder brukes ofte i bruksklasser som ikke er avhengig av forekomstvariabler fra en bestemt klasse. De brukes også når en programmerer trenger tilgang til metoden, men det er ikke nødvendig å instantisere klassen den er inne i. Nytteklasser blir normalt ikke formidlet til objekter. Det ville være uvanlig at en bruksmetode har behov for å endre objektinformasjon. En metode fra klassen java.lang.math, for eksempel pow (), ville være et eksempel på hvordan denne typen metoder vil bli brukt i en bruksklasse.
Forekomstmetoder har direkte tilgang til forekomstvariabler, statiske variabler, forekomstmetoder og statiske metoder. Statiske metoder har ikke direkte tilgang til forekomstvariabler og forekomstmetoder. På grunn av arten av forekomstmetoder som har bedre tilgang til klassemedlemmer enn statiske metoder, er forekomstmetoder den typen metoder som vanligvis brukes i vanlige klasser.
En stor ulempe med statiske metoder oppstår under arv når polymorfisme brukes. Så lenge den statiske overordnede metoden ikke er erklært endelig, kan den samme underordnede statiske metoden kodes i barneklassen som om den blir overstyrt. Dette kalles skjul i stedet for å overstyre fordi en statisk metode ikke kan overstyres.
Når skjul brukes, hvis overordnet statisk metode er tilgjengelig ved å bruke klassens navn, vil overordnede metode brukes. Hvis du får tilgang til den statiske metoden for overstyrte barn ved å bruke objektnavnet, brukes den overstyrte underordnede metoden. Problemet oppstår når et barnobjekt blir forskjøvet som foreldre. I dette tilfellet vil en oppfordring til den statiske metoden for utstøtte bruke foreldremetoden i stedet for den forventede barnemetoden. Med ekte polymorfisme, ville barnemetoden være den som ble aktivert etter en upcast.