1. Składnia deklaracji metody
Deklaracja metody w Javie przypomina przepis w książce kucharskiej: wskazujesz, co metoda zwraca (typ), jak się nazywa, jakie składniki (parametry) są potrzebne i piszesz sam przepis (ciało metody).
Forma ogólna:
type_returned_value nameMetoda(parametry)
{
// tutaj piszemy polecenia
}
- typ wartości zwracanej — co metoda zwraca (na przykład int, void — jeśli nic nie zwraca, String itp.).
- nazwa metody — wymyślona przez ciebie nazwa (zgodnie z zasadami Javy).
- parametry — lista zmiennych, których metoda będzie używać (może być pusta).
- ciało metody — twoje polecenia w klamrach { }.
Przykłady metod bez parametrów
void printHello()
{
System.out.println("Cześć, świecie!");
}
Wyjaśnienie: void — metoda nic nie zwraca; printHello — nazwa; () — brak parametrów.
Przykład metody z parametrami
void printName(String name)
{
System.out.println("Cześć, " + name + "!");
}
Wyjaśnienie: void — nic nie zwraca; printName — nazwa metody; String name — jeden parametr typu String.
Przykład metody z kilkoma parametrami
void printSum(int a, int b)
{
System.out.println("Suma: " + (a + b));
}
Wyjaśnienie: parametry podaje się po przecinku. Wewnątrz metody używamy ich jak zwykłych zmiennych, operator + wykonuje dodawanie.
Ważne!
- Metody deklaruje się wewnątrz klasy, ale NIE wewnątrz innych metod.
- W Javie nie można deklarować metod wewnątrz innych metod — żadnych „matrioszek”.
2. Wywołanie metody
Zadeklarować metodę — to jak powiesić tabliczkę „Zrobię kawę”. A żeby kawa faktycznie się pojawiła, trzeba wywołać metodę — napisać jej nazwę i przekazać wartości parametrów.
Jak wywołać metodę
Jeśli metoda znajduje się w tej samej klasie i jest zadeklarowana jako static (tak jak main), można wywołać ją po prostu po nazwie:
printHello();
printName("Alicja");
printSum(3, 5);
Jeśli metoda nie jest static, trzeba wywoływać ją przez obiekt (o tym później, gdy będziemy omawiać klasy i obiekty).
Przykład: wywołanie metody z main
public class MethodsDemo
{
public static void main(String[] args)
{
printHello();
printName("Bob");
printSum(10, 20);
}
static void printHello()
{
System.out.println("Cześć, świecie!");
}
static void printName(String name)
{
System.out.println("Cześć, " + name + "!");
}
static void printSum(int a, int b)
{
System.out.println("Suma: " + (a + b));
}
}
Zwróć uwagę: metody są zadeklarowane z modyfikatorem static, aby można je było wywołać z main (który też jest static).
3. Parametry i argumenty: co to jest?
Parametry — to zmienne deklarowane w nawiasach przy deklaracji metody.
Argumenty — to rzeczywiste wartości, które przekazujesz przy wywołaniu metody.
Analogia: Parametry — jak lista zakupów; argumenty — to, co faktycznie wkładasz do koszyka.
Przykład
static void greet(String name) // name — parametr
{
System.out.println("Cześć, " + name + "!");
}
public static void main(String[] args)
{
greet("Kasia"); // "Kasia" — argument
greet("Wasia"); // "Wasia" — argument
}
Gdy wywołujesz greet("Kasia"), wewnątrz metody zmienna name przyjmie wartość "Kasia".
Kilka parametrów
static void printInfo(String name, int age)
{
System.out.println("Imię: " + name + ", wiek: " + age);
}
public static void main(String[] args)
{
printInfo("Masza", 25);
printInfo("Piotr", 31);
}
Uwaga! Typy i kolejność parametrów muszą się zgadzać z tym, jak zadeklarowałeś metodę.
4. Praktyka: piszemy własne metody
Metoda, która wypisuje powitanie z imieniem użytkownika
static void sayHelloTo(String name)
{
System.out.println("Cześć, " + name + "!");
}
public static void main(String[] args)
{
sayHelloTo("Andrzej");
sayHelloTo("Elwira");
}
Metoda, która liczy sumę dwóch liczb
static void printSum(int a, int b)
{
int sum = a + b;
System.out.println("Suma: " + sum);
}
public static void main(String[] args)
{
printSum(7, 8);
printSum(15, -5);
}
Metoda, która wypisuje elementy tablicy
static void printArray(int[] array)
{
System.out.print("Tablica: ");
for (int i = 0; i < array.length; i++)
{
System.out.print(array[i] + " ");
}
System.out.println();
}
public static void main(String[] args)
{
int[] nums = {1, 2, 3, 4, 5};
printArray(nums);
}
Metoda, która wypisuje n razy ten sam wiersz
static void repeatPrint(String text, int n)
{
for (int i = 0; i < n; i++)
{
System.out.println(text);
}
}
public static void main(String[] args)
{
repeatPrint("Java jest super!", 3);
}
5. Jak metody pomagają budować aplikację
Jeśli postanowisz napisać prostą grę konsolową albo kalkulator, kod będzie bardziej zrozumiały, jeśli każde zadanie wydzielisz do osobnej metody.
Przykład: mini-kalkulator
public class Calculator
{
public static void main(String[] args)
{
printGreeting();
printSum(3, 7);
printDifference(10, 4);
}
static void printGreeting()
{
System.out.println("Witamy w kalkulatorze!");
}
static void printSum(int a, int b)
{
System.out.println("Suma: " + (a + b));
}
static void printDifference(int a, int b)
{
System.out.println("Różnica: " + (a - b));
}
}
W przyszłości będziesz mógł/mogła dodawać nowe metody (mnożenie, dzielenie, praca z tablicami liczb itp.), a aplikacja będzie się rozwijać, nie zamieniając się w długi blok kodu.
6. Przydatne niuanse
Nazwy metod
- Nazwa metody zwykle zaczyna się małą literą i jest pisana w stylu camelCase: printSum, sayHelloTo, calculateArea.
- Nazwa powinna odzwierciedlać działanie. Unikaj doStuff i method1.
Kolejność parametrów
- Przestrzegaj kolejności i typów parametrów przy wywołaniu.
- Jeśli metoda przyjmuje printInfo(String name, int age), nie można wywołać printInfo(25, "Masza").
Czy można zadeklarować dwie metody o tej samej nazwie?
Tak, jeśli mają inny listę parametrów (inne typy lub liczbę). To przeciążenie metod:
static void printSum(int a, int b) { /* ... */ }
static void printSum(int a, int b, int c) { /* ... */ }
Temu tematowi będzie poświęcony osobny wykład — na razie wystarczy wiedzieć, że Java nie ogranicza do jednej metody o danej nazwie.
7. Typowe błędy przy pracy z metodami i parametrami
Błąd nr 1: Niezgodna liczba lub typy parametrów przy wywołaniu.
Jeśli metoda jest zadeklarowana jako printSum(int a, int b), a wywołujesz ją jako printSum(5), kompilator powie, że taka metoda nie istnieje. Podobnie, printSum("pięć", 7) — błąd typów.
Błąd nr 2: Mylenie parametrów i argumentów.
W deklaracji metody pisze się parametry (na przykład int a, int b), a przy wywołaniu — argumenty (printSum(5, 7)). Nie trzeba tworzyć w main zmiennych o tych samych nazwach — ważniejsze jest dopasowanie typów i kolejności.
Błąd nr 3: Próba zadeklarowania metody wewnątrz metody.
W Javie metody deklaruje się tylko na poziomie klasy. Wewnątrz innej metody deklarować ich nie wolno.
Błąd nr 4: Brak użycia static przy wywołaniu z main.
Jeśli wywołujesz metodę z main, dodaj static do deklaracji albo utwórz obiekt i wywołaj metodę na nim. Szczegóły — później, przy omawianiu OOP.
GO TO FULL VERSION