V programovacím jazyce Java je metoda definována jako opakovaně použitelný blok kódu, který se spouští na základě požadavku.
Často se setkáte s označením metod jako funkce, přičemž oba termíny se používají zaměnitelně.
Proč používat metody a funkce?
Vývojáři softwaru obvykle řeší složité problémy tak, že je rozloží na menší, snadněji zvládnutelné části. Tento přístup, známý jako modulární architektura, umožňuje rozdělit kód do samostatných celků, které lze flexibilně přesouvat a spouštět v rámci celého řešení.
Metody jsou přínosné, protože je lze opakovaně využívat v různých částech aplikace. Představte si například, že potřebujete metodu pro odstranění zbytečných mezer z textového řetězce. Bylo by neefektivní psát stejný kód znovu a znovu pokaždé, když ho potřebujete.
Mnohem lepší je vytvořit metodu jednou a poté ji volat s různými vstupy na různých místech aplikace. Toto řešení je efektivnější a snižuje redundanci kódu.
Navíc, Java umožňuje řídit přístup k metodám pomocí modifikátorů, což umožňuje specifikovat, které metody jsou sdílené v rámci aplikace a které nikoli. Tím se zvyšuje čitelnost, organizovanost a celková struktura kódu.
Druhy metod v Javě
V Javě rozlišujeme dva základní druhy metod: metody definované uživatelem a předdefinované (vestavěné) metody. Jak už název napovídá, uživatelsky definované metody jsou explicitně vytvářeny programátorem. Příkladem takové metody může být:
public int soucet(int a, int b) { return a + b; }
Naopak, předdefinované metody jsou již součástí jazyka Java. Příkladem vestavěné metody je:
String text = "Ahoj Světe"; text.toLowerCase();
V tomto případě je `toLowerCase` předdefinovaná metoda, kterou lze volat z libovolného místa kódu.
Struktura metody v Javě
Podívejme se na typickou strukturu metody v Javě:
[modifikator_pristupu] [navratovy_typ] nazev_metody(...parametry) { // telo metody }
Tyto části metody musí být specifikovány v uvedeném pořadí. Není například možné definovat název metody před návratovým typem. Pojďme si rozebrat význam každé z těchto složek a jejich vzájemnou interakci.
#1. Modifikátor přístupu
Modifikátory přístupu v Javě jsou klíčová slova, která definují viditelnost metody, třídy, rozhraní, proměnné apod. V Javě existuje pět modifikátorů přístupu:
public
: metoda je přístupná z libovolné třídy.private
: metoda je přístupná pouze uvnitř třídy, ve které je definována.default
: výchozí modifikátor přístupu (bez klíčového slova), podobný protected, metoda je přístupná pouze uvnitř stejného balíčku.protected
: metoda je přístupná uvnitř podtříd nebo v rámci specifického balíčku.
public int soucet(int a, int b) { return a + b; }
V tomto případě má metoda `soucet` modifikátor přístupu `public`, což znamená, že je přístupná odkudkoli.
#2. Návratový typ
Návratový typ definuje, jaký datový typ bude metoda vracet. Pokud metoda nemá vracet žádnou hodnotu, použije se klíčové slovo void
. Pokud je použit typ void
, nelze použít klíčové slovo return
. Pro každou metodu je nutné definovat návratový typ.
public void zapis(String text) { System.out.println(text); }
Výše uvedená metoda nevrací žádnou hodnotu, pouze vypisuje text do konzole. Proto má návratový typ void
.
#3. Název metody
Název metody identifikuje metodu ve třídě a používá se k jejímu volání z objektu.
class Tisk { void zapis(String text) { System.out.println(text); } } Tisk p = new Tisk(); p.zapis("Ahoj světe"); // vypíše "Ahoj světe"
#4. Parametry
Metodám lze předávat argumenty na základě definovaných parametrů. Pokud má například metoda definované dva parametry, je nutné jí předat dva argumenty odpovídajících datových typů a v pořadí, ve kterém jsou definovány.
class Vypocet { int soucet(int a, int b) { return a + b; } } Vypocet cal = new Vypocet(); cal.soucet(3, 7); // vrátí 10
#5. Tělo
Tělo metody obsahuje programovou logiku, která provádí požadovanou operaci a vrací specifický výsledek. Je uzavřeno ve složených závorkách a často se označuje jako blok kódu.
class Vypocet { int soucet(int a, int b) { return a + b; } }
V tomto příkladu je příkaz return a + b;
, který se nachází uvnitř složených závorek, tělem metody soucet
.
Volání metod v Javě
Volání metod v Javě je poměrně jednoduché. Metodu lze volat jejím jménem z instance třídy, ve které je definována.
Statické metody lze volat přímo, bez nutnosti vytvářet instanci objektu. Nestatické metody musí být vždy volány z instance třídy, tedy z objektu.
Volání statické metody vypadá následovně:
class Matematika { public static int soucet(int a, int b) { return a + b; } } public class Hlavni { public static void main(String[] args) { int vysledek = Matematika.soucet(5, 2); System.out.println(vysledek); } }
V tomto kódu je metoda `soucet` ve třídě `Matematika` definována jako statická. Proto není potřeba vytvářet instanci třídy, stačí metodu zavolat přímo z třídy.
Naopak, volání nestatické metody vypadá takto:
class Matematika { public int soucet(int a, int b) { return a + b; } } public class Hlavni { public static void main(String[] args) { int vysledek = new Matematika().soucet(5, 2); System.out.println(vysledek); } }
Zde vytváříme nový objekt třídy `Matematika` a teprve potom voláme metodu `soucet`. Důvodem je, že nestatické metody existují až po vytvoření instance třídy.
Toto je způsob, jak volat metody v Javě.
Závěrem
Metody jsou klíčové pro organizaci kódu a jeho opětovné použití nejen v Javě, ale i v jiných programovacích jazycích. Tvoří základ modulární a komponentově orientované architektury.
Pokud se dále zajímáte o programování v Javě, doporučujeme přečíst si více o zpracování výjimek.