Obsah

Statické metody

Neználek

Doposud jsme zapisovali celý program do metody main. Pokud bylo třeba provést stejnou posloupnost příkazů na více místech, museli jsme tyto příkazy zopakovat. Tomu se lze vyhnout. Metody nám umožňují členit kód do logických celků a tyto celky opakovaně využívat. V této kapitole budeme pod pojmem metoda rozumět statickou metodu. Jednu statickou metodu již známe. Je to metoda main. Kromě metody main můžeme ve třídě deklarovat i další metody, např. metodu pro tisk informací o programu.

  class HlavniTrida {
     static void vytiskniInfo() {
        System.out.println( "Verze: 1.0" );
        System.out.println( "Autor: Neználek" );
     }
     public static void main( String[] args ) {
        vytiskniInfo();
     }
  } 
statická metoda Deklarace statické metody začíná klíčovým slovem static. Za ním následuje návratový typ a jméno metody. Návratovým typem může být libovolný javovský typ. Pokud metoda nevrací žádnou hodnotu, uvedeme jako návratový typ void. Jméno metody obvykle začíná malým písmenem. Pokud se jméno skládá z více slov, oddělujeme slova tak, že první písmena dalších slov píšeme velká. Např. spoctiPolomerKruzniceOpsane. Není zvykem používat ve jméně metody podtržítka. Za jménem metody je v závorkách seznam parametrů. Seznam parametrů je tvořen deklaracemi proměnných. Oddělovačem deklarací v seznamu parametrů je čárka.

V místě, kde chceme metodu provést, zapíšeme volání metody. Volání metody se skládá ze jména metody a seznamu parametrů. Návratovou hodnotou metody bude hodnota výrazu, který je uveden za příkazem return.

Na pořadí, v němž metody deklarujeme, nezáleží. Lze volat i metodu, která je deklarována později.

  class HlavniTrida {
     public static void main( String[] args ) {
        Scanner sc = new Scanner( System.in );
        int x = sc.nextInt();
        long faktorial = spoctiFaktorial( x );
        System.out.printf( "%d! = %d%n", x, faktorial );
     }
     static long spoctiFaktorial( int n ) {
        long fakt = 1;
        for( ; n > 1; n-- ) {
           fakt *= n;
        }
        return fakt;
     }
  } 
V metodě typu void lze použít příkaz return bez parametrů. Toho se využívá pro předčasné ukončení metody.
  // vytiskne obdélník a x b ze znaků @
  static void vytiskniObdelnik( int a, int b ) {
     // minimální velikost strany obdélníka je 2
     if( a < 2 || b < 2 ) {
        return;
     }
     for( ; a > 0; a-- ) {
        for( int i = 0; i < b; i++ ) {
           System.out.print( '@' );
        }
        System.out.pritln();
     }
  } 
Příkaz return se může v metodě vyskytovat vícekrát. Provede se však vždy jen jednou jako poslední příkaz metody. Jeho provedení způsobí okamžité ukončení metody.
  static boolean jePrvocislo( int n ) {
     if( n == 2 ) {  // 2 je prvočíslo
        return true;
     }
     if( n % 2 == 0 ) {
        // sudé číslo není prvočíslo (kromě 2)
        return false;
     }
     int odmocnina = (int) Math.sqrt( n );
     for( int i = 3; i <= odmocnina; i += 2 ) {
        if( n % i == 0 ) {
           // našli jsme dělitele, tudíž n není prvočíslo
           return false;
        }
     }
     return true;
  } 

Úloha 1

Doplňte seznam parametrů metody max.

Úloha 2

Doplňte volání metody spoctiVzdalenost.

Úloha 3

Doplňte návratový typ metody.

Úloha 4

Doplňte věty.