Metoda v Javě není nic jiného než znovu použitelný kus kódu, který lze spustit na vyžádání.
Metody se často nazývají funkce a všimnete si, že obě slova se používají zaměnitelně.
Table of Contents
Význam používání metod nebo funkcí
Softwaroví vývojáři řeší problém tak, že jej rozdělí na menší problémy a vyřeší je tak, aby vyřešili problém jako celek. Tato myšlenka vedla k tomu, co je známé jako modulární architektura. V tomto přístupu vývojáři rozdělují kód na části, které lze přesouvat a spouštět k vyřešení většího problému.
Metody jsou výhodné, protože jsou použitelné v různých případech v celé aplikaci. Řekněme, že chcete vytvořit obslužnou metodu k odstranění všech nepotřebných mezer z věty. Bude mít smysl psát logiku pokaždé, když ji někde ve své aplikaci potřebujete?
Nebo má smysl vytvořit metodu jednou a pak použít stejnou metodu s různými vstupy na více místech ve vaší aplikaci? Ten druhý je samozřejmě lepší a efektivnější.
A nejen to, pomocí modifikátorů přístupu v Javě můžete dokonce ovládat, které metody jsou skutečně sdílené napříč aplikací a které ne. Pomáhá také, aby váš kód vypadal čitelněji, organizovaněji a strukturovaněji.
Typy metod v Javě
V Javě existují dva typy metod: uživatelem definované a předdefinované metody. Uživatelsky definované metody, jak název napovídá, jsou definovány explicitně programátorem. Příkladem uživatelem definované metody může být:
public int sum(int a, int b) { return a + b; }
Na druhou stranu, předdefinované metody nebo vestavěné metody již existují jako součást programovacího jazyka Java. Příkladem vestavěné metody může být:
String text = "Hello World"; text.toLowerCase();
Zde je toLowerCase vestavěná metoda Java, kterou lze volat odkudkoli ve vašem kódu.
Struktura metody v Javě
Pojďme se podívat na ideální strukturu metody v Javě:
[access_modifier] [return_type] method_name(...parameters) { // method body }
Tyto součásti metody musí být specifikovány v pořadí. Například metodu nelze definovat před návratovým typem a podobně. Pojďme se seznámit s funkcemi každé z těchto složek tvořících metodu a jak spolu fungují.
#1. Modifikátor přístupu
V Javě jsou modifikátory přístupu klíčová slova, která definují viditelnost metody, třídy, rozhraní, proměnné atd. Technicky je v Javě pět modifikátorů přístupu:
- veřejný: přístupný všem třídám
- private: přístupné pouze pro třídu, do které patří
- default: výchozí modifikátor přístupu je podobný modifikátoru protected, ve kterém je metoda přístupná pouze uvnitř stejného balíčku
- protected: přístupné v rámci podtříd nebo konkrétního balíčku
public int sum(a int, b int) { return a + b; }
Zde má metoda calc modifikátor přístupu jako public, a proto bude přístupná odkudkoli.
#2. Typ návratu
Návratový typ funkce definuje datový typ dat, která funkce vrátí. Pokud nechcete z funkce nic vracet, zadejte v tomto případě návratový typ void. Klíčové slovo return nelze použít, když je zadán typ void. Aby bylo možné definovat funkci, je nutné zadat návratový typ.
public void log(String text) { System.out.println(text); }
Výše uvedená metoda nic nevrací; je to jen tisk textu do konzole. A tedy návratový typ void.
#3. Název metody
Identifikuje metodu ve třídě a používá se k vyvolání metody z objektu.
class Print { void log(String text) { System.out.println(text); } } Print p = new Print(); p.log("hello world"); // outputs "hello world"
#4. Parametry
Metodám můžete předávat argumenty podle parametrů v nich definovaných. Pokud jsou například pro metodu definovány dva parametry, můžete předat pouze dva argumenty s odpovídajícími datovými typy. A argumenty musíte předat v pořadí, v jakém jsou definovány.
class Calc { int sum(a int, b int) { return a + b; } } Calc cal = new Calc(); cal.sum(3, 7); // will return 10
#5. Tělo
Tělo metody zahrnuje programovací logiku použitou k vrácení konkrétního výsledku. Provádí funkci, kterou má metoda vykonávat. Je uzavřen ve složených závorkách a často se nazývá blok kódu.
class Calc { int sum(a int, b int) { return a + b; } }
Zde je příkaz return uvnitř složených závorek tělem součtu metody.
Metody volání v Javě
Vyvolání metod v Javě je celkem jednoduché. Metodu můžete volat jejím jménem z instance třídy, ve které žije.
Statické metody lze vyvolat bez instance objektu třídy, ve které se nachází. Nestatické metody musí být striktně vyvolány z instance třídy, jinými slovy, z objektu.
U statických metod vypadá vyvolání takto:
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); } }
Ve výše uvedeném kódu je metoda součtu uvnitř třídy Math statická metoda. A to je důvod, proč nemusíte vytvářet objekt (instanci) třídy Math, stačí vyvolat metodu ze samotné třídy.
Na druhé straně u nestatických metod vypadá vyvolání takto:
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); } }
Zde vytváříte nový objekt ze třídy Math a poté vyvoláte metodu sum. Důvodem je to, že nestatické metody nejsou vytvořeny, dokud není vytvořena instance třídy.
Takto můžete volat metodu v Javě.
Závěrečná slova
Nejen v Javě, ale v jakémkoli programovacím jazyce jsou metody skvělým způsobem, jak uspořádat kód a znovu jej použít na více místech. Metody jsou stavebními kameny modulární architektury a architektury založené na komponentách.
Pokud jste v Javě, přečtěte si více o zpracování výjimek v Javě.