[Explained] Jak wywołać metodę w Javie

W języku Java, metoda to fragment kodu, który można wielokrotnie wykorzystywać. Możemy ją uruchomić w dowolnym momencie, kiedy zajdzie taka potrzeba.

Metody są często nazywane funkcjami. Te dwa określenia są używane zamiennie, co łatwo zauważyć w praktyce.

Dlaczego warto stosować metody (funkcje)?

Tworzenie oprogramowania polega na rozkładaniu złożonych problemów na mniejsze, łatwiejsze do rozwiązania elementy. Takie podejście prowadzi do tak zwanej architektury modułowej. W jej ramach, programiści dzielą kod na fragmenty, które można swobodnie przenosić i wykorzystywać w różnych sytuacjach, aby uporać się z większym zadaniem.

Użycie metod niesie ze sobą wiele korzyści, ponieważ można je stosować w różnych częściach aplikacji. Załóżmy, że potrzebujesz metody do usunięcia zbędnych spacji z tekstu. Czy musisz za każdym razem pisać od nowa logikę odpowiedzialną za to zadanie?

Oczywiście, że nie. Zdecydowanie lepszym rozwiązaniem jest zdefiniowanie metody raz, a następnie wywoływanie jej w różnych miejscach programu, przekazując jej różne dane. Takie podejście jest o wiele bardziej efektywne.

Co więcej, dzięki modyfikatorom dostępu, które oferuje Java, masz pełną kontrolę nad tym, które metody są dostępne w różnych częściach aplikacji. Pomaga to w utrzymaniu przejrzystości, porządku i struktury kodu.

Rodzaje metod w języku Java

W Javie wyróżniamy dwa podstawowe rodzaje metod: metody tworzone przez użytkownika oraz metody predefiniowane. Metody zdefiniowane przez użytkownika, jak sama nazwa wskazuje, są tworzone samodzielnie przez programistę. Poniżej znajduje się przykład takiej metody:

public int sum(int a, int b) {
    return a + b;
}

Z drugiej strony, metody predefiniowane, inaczej wbudowane, są już częścią języka Java i możemy z nich korzystać od razu. Przykładem takiej metody jest:

String text = "Hello World";
text.toLowerCase();

Metoda `toLowerCase()` jest wbudowaną metodą Javy, którą można wywołać w dowolnym miejscu w kodzie.

Struktura metody w Javie

Przyjrzyjmy się, jak wygląda typowa struktura metody w Javie:

[modyfikator_dostępu] [typ_zwracany] nazwa_metody(...parametry) {
    // ciało metody
}

Kolejność tych elementów jest bardzo ważna. Nie możemy na przykład umieścić nazwy metody przed typem zwracanym. Przyjrzyjmy się bliżej każdemu z tych składników i zobaczmy, jak ze sobą współpracują.

# 1. Modyfikator dostępu

Modyfikatory dostępu to słowa kluczowe w Javie, które określają, w jakim zakresie dana metoda, klasa, interfejs, zmienna itd. są widoczne. W Javie mamy pięć modyfikatorów dostępu:

  • `public`: dostępny dla wszystkich klas
  • `private`: dostępny tylko w obrębie klasy, w której został zdefiniowany
  • `default` (domyślny): działa podobnie do `protected`, metoda jest dostępna w ramach tego samego pakietu
  • `protected`: dostępny dla klas potomnych lub w ramach tego samego pakietu
public int sum(int a, int b) {
    return a + b;
}

W tym przykładzie, metoda `sum` ma modyfikator dostępu `public`, co oznacza, że można z niej korzystać z dowolnego miejsca w programie.

#2. Typ zwracany

Typ zwracany przez metodę definiuje, jakiego rodzaju dane metoda ta ma zwrócić. Jeśli metoda nie zwraca żadnej wartości, należy określić typ `void`. W takim przypadku nie można użyć słowa kluczowego `return`. Określenie typu zwracanego jest obowiązkowe przy definiowaniu każdej metody.

public void log(String text) {
    System.out.println(text);
}

Powyższa metoda nie zwraca żadnej wartości. Jej zadaniem jest jedynie wyświetlenie tekstu na konsoli, dlatego jej typ zwracany to `void`.

#3. Nazwa metody

Nazwa metody jest jej identyfikatorem w obrębie klasy i jest wykorzystywana do jej wywołania.

class Print {
    void log(String text) {
        System.out.println(text);
    }
}

Print p = new Print();
p.log("hello world"); // wyświetli "hello world"

#4. Parametry

Parametry to dane wejściowe przekazywane do metody. Liczba i typ parametrów muszą odpowiadać definicji metody. Podczas wywoływania metody, należy przekazać argumenty w kolejności, w jakiej zostały zdefiniowane parametry.

class Calc {
    int sum(int a, int b) {
        return a + b;
     }
}

Calc cal = new Calc();
cal.sum(3, 7); // zwróci 10

#5. Ciało metody

Ciało metody zawiera logikę programistyczną, która jest potrzebna do wykonania zadania i zwrócenia wyniku. Jest ujęte w nawiasy klamrowe, które często nazywamy blokiem kodu.

class Calc {
    int sum(int a, int b) {
        return a + b;
     }
}

W powyższym przykładzie, instrukcja `return` wewnątrz nawiasów klamrowych stanowi ciało metody `sum`.

Wywoływanie metod w Javie

Wywoływanie metod w Javie jest stosunkowo proste. Aby wywołać metodę, używamy jej nazwy i instancji klasy, w której została zdefiniowana.

Metody statyczne można wywoływać bezpośrednio po nazwie klasy, bez konieczności tworzenia obiektu. Metody niestatyczne wymagają utworzenia instancji klasy (obiektu), aby można było je wywołać.

Wywołanie metody statycznej wygląda następująco:

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);
    }
}

W tym przykładzie metoda `sum` w klasie `Math` jest metodą statyczną. Dlatego możemy wywołać ją bezpośrednio, używając nazwy klasy, bez tworzenia obiektu tej klasy.

Z kolei wywołanie metody niestatycznej wygląda następująco:

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);
    }
}

W tym przypadku musimy najpierw utworzyć nowy obiekt klasy `Math`, aby móc wywołać metodę `sum`. Metody niestatyczne są dostępne dopiero po utworzeniu instancji klasy.

W ten sposób można wywoływać metody w Javie.

Podsumowanie

Metody są bardzo ważnym elementem nie tylko Javy, ale każdego innego języka programowania. Pozwalają na uporządkowanie kodu i wykorzystanie tych samych fragmentów wielokrotnie. Są podstawowym elementem architektury modułowej i opartej na komponentach.

Jeśli interesujesz się Javą, warto zgłębić wiedzę na temat obsługi wyjątków w tym języku.