Metody

Deklarace metody

Deklarace metody zahrnuje hlavičku metody (jméno, typ návratové hodnoty a případně typy a jména formálních parametrů) a vlastní tělo metody. Tělo metody uzavřeno do složených závorek a může obsahovat příkazy a deklarace proměnných. Návratová hodnota se předává příkazem return (výraz); nebo return výraz; (dle typu výrazu).

Co se týká umístění deklarace metody je v tomto směru překladač Javy benevolentní. Metodu můžeme deklarovat před nebo i za jejím voláním. jediné omezení je, že metoda musí patřit do nějaké třídy (minimálně Main())

static int nazevmetody(int a, int b, ...... ) {
   příkazy;
   return výraz;
   }

Způsob předávání skutečných parametrů a konverze

Java umožňuje pouze předávání parametrů hodnotou tj. parametry mohou být v metodě pouze čteny. V metodě lze pomocí příkazu přiřazení jejich hodnotu změnit, ale pouze lokálně (v rámci dané metody).

Pokud není typ návratové hodnoty shodný s návratovým typem metody a neprovádí se implicitní rozšiřující typová konverze je nutné provést explicitní zužující typovou konverzi. Totéž platí platí pro předávané parametry.

Přetížené metody

Přetížené metody (overloaded) jsou metody se stejným jménem, ale jinou hlavičkou. Přetížení metody znamená, že se formální parametry metody musí lišit počtem nebo typem nebo poředím event. kombinacemi předchozího. Pokud je volána přetížená metoda, je vybrána ta, která vyhovuje počtem, typy a pořadím skutečných parametrů. Přetížené metody se používají pro stejné či podobné operace s růynými datovými typy či počtem parametrů.

Přetížená metoda - různé datové typy

static int secti(int a, int b) {
   return a+b;
   }
static long secti(long a, long b) {
   return a+b;
   }
static double secti(double a, double b) {
   return a+b;
   }

Přetížená metoda - různý počet parametrů

static int secti(int a, int b) {
   return a+b;
   }
static int secti(int a, int b, int c) {
   return a+b+c;
   }
static int secti(int a, int b, int c, int d) {
   return a+b+c+d;
   }

courses/b0b36pjv/tutorials/02/metody.txt · Last modified: 2018/02/06 08:43 (external edit)