Mester Java-metoder: En komplett guide

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.