Sunteți pe pagina 1din 16

Curs 5.

Metode
Metode
O metodă Java este o colecție de declarații care sunt grupate pentru a efectua o operație. Când apelați
metoda System.out.println (), de exemplu, sistemul execută de fapt mai multe declarații pentru a afișa un
mesaj pe consolă.

Creați propriile metode cu sau fără valori de retur, invocați o metodă cu sau fără parametri și aplicați
abstractizarea metodei în proiectarea programului.

Metoda de creare
exemplu pentru a explica sintaxa unei metode -

Sintaxă

public static int metodaNume (int a, int b) {


    // corp
}
Metode
public static - modificator
int - tip retur
metodaNume - numele metodei
a, b - parametrii formali
int a, int b - lista parametrilor

Definirea metodei constă dintr-un antet de metodă și un corp de metodă.


Sintaxă

modificator returnType nameOfMethod (Lista de parametri) {


    // corpul metodei
}
Metode
Sintaxa prezentată mai sus include -

modificator - definește tipul de acces al metodei și este opțional să fie utilizat.

returnType - Metoda poate returna o valoare.

nameOfMethod - Acesta este numele metodei. Semnătura metodei constă din numele
metodei și din lista parametrilor.

Lista parametrilor - Lista parametrilor, este tipul, ordinea și numărul de parametri ai unei
metode. Acestea sunt opționale, metoda poate conține zero parametri.

corpul metodei - Corpul metodei definește ce face metoda cu enunțurile.


Metode
Exemplu
Codul sursă al metodei definite mai sus numită min (). Această metodă ia doi parametri num1
și num2 și returnează minim-ul dintre cei doi -

/ ** fragmentul returnează minimul dintre două numere * /

public static int minFunction (int n1, int n2) {


    int min;
    if (n1> n2)
       min = n2;
    altfel
       min = n1;

    retur min;


}
Metode
Metoda de apelare
Pentru utilizarea unei metode, aceasta trebuie apelata. Există două moduri în care o metodă
este apelata, metoda returnează o valoare sau returneaza nimic (fără valoare de returnare).
Procesul de apelare a metodei este simplu. Când un program invocă o metodă, controlul
programului este transferat la metoda apelată. Această metodă numită, returnează apelantul
în două condiții, când:
•declarația de returnare este executată.
•ajunge la metoda care încheie acolada de închidere.
Metodele de returnare a void sunt considerate apeluri la o declarație. Să luăm în considerare
un exemplu -
System.out.println ("Acesta este un curs Java”);
Valoarea de returnare a metodei poate fi înțeleasă cu următorul exemplu -

rezultat rezultat = suma (6, 9);


Metode
public class ExempluMinNumere {
       public static void main (String [] args) {
       int a = 11;
       int b = 6;
       int c = minFunctie (a, b);
       System.out.println ("Valoare minimă =" + c);
    }
    / ** returnează cel puțin două numere * /
    public static int minFunctie (int n1, int n2) {
       int min;
       if (n1> n2)
          min = n2;
       else
          min = n1;
       return min;
    }
}
Output Minimum value = 6
Metode
public class ExempluVoid {

public static void main(String[] args) {


metodaCalculPunctaj(248.7);
}

public static void metodaCalculPunctaj(double puncte) {


if (puncte >= 202.5) {
System.out.println("Clasa:A1");
}else if (puncte >= 122.4) {
System.out.println("Clasa:A2");
}else {
System.out.println("Clasa:A3");
}
}
}
public class ExempluInterschimbare {
Metode
public static void main(String[] args) {
int a = 30;
int b = 45;
System.out.println("Inainte de interschimbare, a = " + a + " si b = " + b);

// Invocarea metodei de interschimbare


schimba(a, b);
System.out.println("\n**Inainte si dupa schimbare valorile raman aceleasi**:");
System.out.println("Dupa schimbare, a = " + a + " si b este " + b);
}

public static void schimba(int a, int b) {


System.out.println("Inainte de schimbare(in interior), a = " + a + " b = " + b);

// schimba n1 cu n2
int c = a;
a = b;
b = c;
System.out.println("Dupa schimbare (in interior), a = " + a + " b = " + b);
}
}
Metode –Supraîncărcare
Dacă o clasă are două sau mai multe metode cu același nume, dar parametri
diferiți, vorbim de supraîncărcare a metodei. Este diferit de suprascriere.

În cazul suprascrierii, o metodă are același nume, tip, număr de parametri


etc.

Să luăm în considerare exemplul discutat mai devreme pentru a găsi numere


minime de tip întreg.
Să presupunem că dorim să găsim numărul minim de tip double.
Conceptul de supraîncărcare va fi introdus pentru a crea două sau mai multe
metode cu același nume, dar cu parametri diferiți.
Metode –Supraîncărcare
public class ExempluSupraincarcare {
public static void main(String[] args) {
int a = 11;
int b = 6;
double c = 7.3;
double d = 9.4;
int rezultat1 = minim(a, b);
// aceasi functie cu parametri diferiti
double rezultat2 = minim(c, d);
System.out.println("Valoarea minima este = " + rezultat1);
System.out.println("Valoarea minima este = " + rezultat2);
}
// pentru integer
public static int minim(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
// for double
public static double minim(double n1, double n2) {
double min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
}
Metode –This

Cuvântul cheie This


este un cuvânt cheie în Java care este folosit ca referință la obiectul clasei
curente, cu o metodă de instanță sau un constructor.

Cu This puteți face referire la membrii unei clase, cum ar fi constructori,


variabile și metode.

Cuvântul cheie This este utilizat numai în cadrul metodelor de instanță sau al
constructorilor.
This este folosit pentru a diferentia variabilele de instanță de variabilele
locale dacă au aceleași nume, în cadrul unui constructor sau al unei metode.
Metode –This
public class ExempluThis {
// Instance variable num
int num = 10;

ExempluThis() {
System.out.println("Acesta este un exemplu pentru cuvantul cheie this");
}

ExempluThis(int num) {
// invoca constructorul default
this();

// asigneaza variabila locala num la variabila de instanta num


this.num = num;
}

public void saluta() {


System.out.println("Buna ziua");
}

public void print() {


// variabila locala
int num = 20;

// tipareste variabila locala


System.out.println("Valoarea variabilei locale num este : "+num);

// tipareste variabila de instanta


System.out.println("Valoarea variabilei de instanta num este : "+this.num);
Metode –This
// invoca metoda saluta Invoking the greet method of a class
this.saluta();
}

public static void main(String[] args) {


// instantierea clasei
ExempluThis obj1 = new ExempluThis ();

// invocarea metodei print


obj1.print();

// atribuirea unei noi valori variabilei num printr-un constructor parametrizat


ExempluThis obj2 = new ExempluThis(30);

// invocarea metodei print din nou


obj2.print();
}
}
Metode –Argumente cu variabile
public class ArgVariabile {

public static void main(String args[]) {


// Call method with variable args
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}

public static void printMax( double... numere) {


if (numere.length == 0) {
System.out.println("Nici un argument");
return;
}

double rezultat = numere[0];

for (int i = 1; i < numere.length; i++)


if (numere[i] > rezultat)
rezultat = numere[i];
System.out.println("Valoarea maxima este " + rezultat);
}
}
Metode –Finalize ()

Metoda finalize ()
Se defineste o metodă care va fi numită chiar înainte de distrugerea finală a
unui obiect de către colectorul de gunoi.
Această metodă se numește finalize () și poate fi utilizată pentru a se asigura
că un obiect se termină curat.
De exemplu, puteți utiliza finalize () pentru a vă asigura că un fișier deschis
deținut de acel obiect este închis.
Pentru a adăuga un finalizator la o clasă, pur și simplu definiți metoda finalize
().
Runtime-ul Java apelează această metodă ori de câte ori este pe punctul de a
recicla un obiect din acea clasă.În cadrul metodei finalize (), veți specifica
acțiunile care trebuie efectuate înainte ca un obiect să fie distrus.
Metoda finalize () are această formă generală –
protected void finalize( ) {
// cod
}

S-ar putea să vă placă și