Limbajul JAVA -Clase.Relatii de mostenire

1
1196
tutorial java
Limbajul JAVA -Clase.Relatii de mostenire
5 (100%) 2 votes

 

III.  Limbajul JAVA -Clase.Relatii de mostenire

 

1.  Clase

Clasa este o descriere a unei multimi de obiecte caracterizate prin structuri si comportamente similare.
O clasava cuprinde:
Atribute – definitiile datelor (starii obiectelor)
Metode – rutinele ce implementeaza comportamentul obiectelor
Sintaxa folosita pentru a defini o clasa in Java este:

[modificatori] class nume_clasa [mostenire] {
// date si metode
}

Atributele:

  • Variabile instanta – starea fiecarui obiect
  • Variabile clasa – comune – declarate “static
  • Constantele – atribute declarate “final

Exemple:

Persoana p1; p1.nume
java.lang.Math.PI

Metodele–proceduri si functii care implementeaza comportamentul obiectelor
Java permite supraincarcareametodelor dupa parametrii dar nu si dupa tipul returnat. Ex:

boolean setNume( String nume );
boolean setNume( String nume, String prenume);
String setNume( String nume ); // gresit

Metodele pot fi ale instantelor sau ale clasei
Metodele clasei:

  1. declarate “static”
  2. pot actiona doar asupra atributelor de clasa
  3. se aplica clasei si nu obiectelor ( ex: java.lang.Math.random() ).

Metoda speciala: main() –punct de intare in program.

Metode speciale: constructorii–permit initializarea obiectelor la creare
Constructorii permit supraincarcarea
Orice clasa are fie constructori expliciti fie un constructor implicit fara argumente
Caracteristicile unei metode constructor:

  • are acelasi nume cu clasa
  • nu returneaza nimic
  • va fi apelata automat la crearea unui obiect nou
  • trebuie declarat public

Exemplu:

public class Persoana{ /** Atributele clasei */ String nume;// numele de familie String prenume; // prenumele persoanei int varsta; // varsta in ani impliniti …
/** Constructor */
public Persoana( String numePers, String prenumePers ) {
nume = numePers; prenume = prenumePers; varsta = 0; }
/** Metodele clasei */
public String getNume() { return nume+" "+prenume; }
…
}

2.  Modificatorii

Modificatori de vizibilitate pentru membrii unei clase: public, private, protected
Public: acces nelimitat
Private: acces restrictionat la clasa respectiva
Protected: semnificatie in contextul mostenirii
Implicit: vizibilitate la nivel de package
Recomandare: atributele –protected; metodele –public
Metode de acces: getAtribut(), setAtribut()

 

3.  Crearea instantelor

Instanta este un obiectal clasei respective
Instanta are o stare data de atributele de tip variabila instanta
In Java toate instantele unei clase se creaza in mod dinamic
Crearea unei instante presupune aplicarea operatorului new() de alocare dinamica:

p1 = new Persoana( “Ionescu”, “Mihai”);

Operatorul new() va chema constructorul clasei respective pentru a face initializariledupa alocarea memoriei pentru instanta.

 

4.  Gestionarea memoriei

In Java nu exista nici un operator pentru stergerea unei instante (si eliberarea resurselor ei)
De eliberarea resurselor se ocupa o componenta a masinii virtuale numita Garbage Collector(GC)
Principiul de lucru al GC:Daca spre un anumit obiect nu mai exista nici o referinta externa, acel obiect devine candidat la eliminare din memorie:

…
Persoana p1 = new Persoana(“Ionescu”);
p1 = p2; // Ob. “Ionescu”devine candidat la eliminare

GC actioneaza doar atunci cand este necesar (nu mai sunt suficiente resurse pentru noi alocari)
Pentru a efectua operatii suplimentare la eliminarea obiectului se poate scrie o metoda finalize:

protected void finalize() throws Throwable {
System.out.println(“Se elimina persoana"+getNume());
}

 

5.  Mostenire

 

Permite reutilizarea codului prin extinderea unei clase
Superclasa–clasa mostenita (clasa de baza)
Subclasa–clasa mostenitoare (clasa derivata)
Subclasa este “un fel de” superclasa
Mostenirea:

  • Simpla
  • Multipla

java1

La mostenirea multipla: conflicte de nume
Java permite doar mostenire simpla intre clase
Obs.O superclasa poate fi extinsa de mai multe subclase distincteSintaxa Java pentru specificarea unei mosteniri:

class nume_subclasaextendsnume_superclasa{
//continut specific subclasei
}

O subclasa mosteneste toti membrii declarati ca fiind “public”sau “protected”in superclasa
Membrii declarati “private”in superclasa nu sunt accesibili un subclasa
Membrii mosteniti se comporta ca si membrii definiti in clasa
O clasa de baza impreuna cu toate descendentele ei formeaza o ierarhie de clase
Mostenirea in Java permite suprascrierea metodelor pentru a reflecta particularitatile subclasei
Apelul unei metode din superclase se poate face prin:

super.numeMetoda(parametrii)

Un obiect de tip subclasa poate fi referit de o variabila de tip superclasa, insa isi pastreaza identitatea.

1 COMENTARIU

LĂSAȚI UN MESAJ