En metode i Java, ofte referert til som en funksjon, er i bunn og grunn en gjenbrukbar kodebit som utføres når den blir kalt.
Begrepene metode og funksjon brukes ofte om hverandre innenfor programmering.
Betydningen av å bruke metoder eller funksjoner
Programvareutviklere angriper komplekse problemer ved å dele dem opp i håndterbare deler. Hver del løses individuelt, og til slutt settes de sammen for å løse det opprinnelige problemet. Dette prinsippet danner grunnlaget for modulær arkitektur. Her deler utviklere koden opp i mindre enheter, som er enkle å flytte og gjenbruke for å løse større oppgaver.
Metoder gir en stor fordel ved at de kan gjenbrukes i hele applikasjonen. Tenk deg at du trenger en funksjon som fjerner alle overflødige mellomrom fra en tekststreng. Ville det være effektivt å skrive denne funksjonaliteten hver gang du trenger den?
Det er mye mer hensiktsmessig å lage metoden én gang, og deretter bruke den samme metoden med forskjellig input flere steder i programmet. Dette er både mer effektivt og gir bedre lesbarhet.
I tillegg gir Java deg muligheten til å styre tilgjengeligheten til metoder med tilgangsmodifikatorer. Du kan spesifisere hvilke metoder som kan deles mellom deler av applikasjonen, og hvilke som skal være private. Dette bidrar til å gjøre koden mer oversiktlig, organisert og strukturert.
Ulike typer metoder i Java
Det er to hovedtyper metoder i Java: brukerdefinerte og forhåndsdefinerte (innebygde) metoder. Brukerdefinerte metoder er laget av programmereren for å utføre spesifikke oppgaver. Et eksempel på en brukerdefinert metode kan være:
public int sum(int a, int b) { return a + b; }
På den andre siden har vi de forhåndsdefinerte eller innebygde metodene, som er en del av selve Java-språket. Et eksempel på en slik metode er:
String text = "Hei Verden"; text.toLowerCase();
Her er `toLowerCase` en innebygd metode i Java som du kan kalle hvor som helst i koden din.
Strukturen til en metode i Java
La oss se på hvordan en metode typisk er strukturert i Java:
[tilgangsmodifikator] [returtype] metodenavn(...parametere) { // metodekropp }
Det er viktig å spesifisere disse komponentene i denne rekkefølgen. Du må for eksempel angi returtypen før metodenavnet. Nå skal vi se nærmere på hva hver av disse komponentene betyr og hvordan de fungerer sammen.
#1. Tilgangsmodifikator
I Java bestemmer tilgangsmodifikatorene synligheten til metoder, klasser, grensesnitt og variabler. Det finnes i hovedsak fire tilgangsmodifikatorer i Java:
- `public`: Metoden er tilgjengelig for alle klasser.
- `private`: Metoden er kun tilgjengelig innenfor klassen den er definert i.
- `standard`: (Ingen spesifikk modifikator brukes) Metoden er kun tilgjengelig i samme pakke.
- `protected`: Metoden er tilgjengelig i underklasser eller innenfor samme pakke.
public int sum(int a, int b) { return a + b; }
I dette eksemplet har `sum`-metoden tilgangsmodifikatoren `public`, som betyr at den kan brukes overalt.
#2. Returtype
Returtypen til en metode definerer datatypen til verdien som metoden returnerer. Hvis en metode ikke returnerer noen verdi, angir man `void` som returtype. Når man bruker returtypen `void`, kan ikke nøkkelordet `return` brukes. Det er nødvendig å spesifisere en returtype når man definerer en metode.
public void log(String text) { System.out.println(text); }
Metoden ovenfor returnerer ingen verdi, den skriver bare ut tekst til konsollen. Dermed brukes returtypen `void`.
#3. Metodenavn
Metodenavnet identifiserer en metode innenfor en klasse og brukes for å kalle metoden fra et objekt.
class Print { void log(String text) { System.out.println(text); } } Print p = new Print(); p.log("Hei verden"); // Skriver ut "Hei verden"
#4. Parametere
Du kan sende verdier, kalt argumenter, til en metode i henhold til parameterne som er definert i metoden. Hvis en metode for eksempel definerer to parametere, må du sende to argumenter med tilsvarende datatyper. Argumentene må også sendes i den rekkefølgen som de er definert i metode-deklarasjonen.
class Calc { int sum(int a, int b) { return a + b; } } Calc cal = new Calc(); cal.sum(3, 7); // returnerer 10
#5. Metodekroppen
Metodekroppen inneholder den faktiske programlogikken som brukes for å utføre metoden og produsere et resultat. Den er omsluttet av krøllete parenteser `{}` og kalles ofte en kodeblokk.
class Calc { int sum(int a, int b) { return a + b; } }
Her er retursetningen `return a + b;` innenfor krøllparentesene og utgjør kroppen til `sum`-metoden.
Kalle metoder i Java
Det er relativt enkelt å kalle en metode i Java. Du kaller en metode ved å bruke navnet dens fra en instans av klassen den tilhører.
Statiske metoder kan kalles uten å lage et objekt av klassen, mens ikke-statiske metoder må kalles fra en instans av klassen, altså et objekt.
Slik ser et anrop av en statisk metode ut:
class Math { public static int sum(int a, int b) { return a + b; } } public class Main { public static void main(String[] args) { int add = Math.sum(5, 2); System.out.println(add); } }
I koden ovenfor er `sum`-metoden i klassen `Math` en statisk metode. Derfor trenger du ikke å lage et objekt av klassen `Math`. Du kan kalle metoden direkte ved å bruke klassenavnet.
For ikke-statiske metoder må du derimot først lage et objekt, slik som vist under:
class Math { public int sum(int a, int b) { return a + b; } } public class Main { public static void main(String[] args) { int add = new Math().sum(5, 2); System.out.println(add); } }
Her lager du et nytt objekt av klassen `Math` og deretter kaller du `sum`-metoden. Grunnen til at det er slik, er at ikke-statiske metoder ikke blir instansiert før klassen er instansiert.
Dette er hvordan du kan kalle en metode i Java.
Avsluttende ord
Metoder er viktige for organisering og gjenbruk av kode i alle programmeringsspråk, ikke bare i Java. Metoder er grunnleggende byggesteiner i modulær og komponentbasert arkitektur.
Hvis du er interessert i Java, anbefaler vi at du leser mer om unntakshåndtering i Java.