Sunteți pe pagina 1din 14

Moștenire.

Clase de
bază , clase derivate
Definiția Programării Orientate pe Obiecte

Relația de moștenire reprezintă elementul fundamental care distinge programarea


orientată pe obiecte de programarea structurată.

Definiție: Programarea orientată pe obiecte este o metodă de implementare a


programelor în care acestea sunt organizate ca și colecții de obiecte care cooperează
între ele, fiecare reprezentând instanța unei clase, fiecare clasă fiind membră unei
ierarhii de clase ce sunt unite prin relații de moștenire.
Moștenirea în context POO:

Conform acestui principiu dintr-o clasă de bază pot fi derivate mai multe clase și fiecare clasă
derivată poate deveni la rîndul ei o clasă de bază pentru alte clase derivate.

Se poate astfel realiza o ierarhie de clase, care să modeleze sisteme complexe.

Construirea ierarhiei de clase constituie activitatea fundamentală de realizare a unei aplicații


obiect orientate.

Exemplu: Fie că avem de creat clasele Dreptunghi , Patrat, Romb. Aceste clase au trăsături
comune(număr de unghiuri , număr de laturi , culoare , ș.a).

Folosind conceptul de moștenire vom putea implementa aceste clase ca să fie ușor de înțeles,
menținut și fără cod duplicat.
Moștenirea ne permite să proiectăm o clasă generală (super clasă , clasă de bază,
clasă părinte), de exemplu clasa Paralelogram care să poată fi extinsă mai tîrziu pentru
a crea clase specifice(subclase, clase copil , clase derivate), de ex. clasele Triunghi,
Romb, Dreptunghi.

Clasa nouă va moșteni toate atributele și metodele clasei de bază , avînd posibilitatea
de a avea metode și atribute proprii.
Paralelogram

Triunghi Romb Dreptunghi


Cum realizăm moștenirea în Java?

În Java poate fi implementată doar moștenirea simplă, adică o clasă poate avea o
singură superclasă sau clasă părinte.

Pentru a deriva o clasă se folosește cuvîntul cheie extends în semnătura clasei copil,
urmată de numele clasei părinte.

Dacă ne reamintim sintaxa de declarare a claselor:


De exemplu: Definiți clasa Angajat caracterizată de următoarele atribute: nume,
prenume, salariu. Derivați din clasa Angajat clasa Manager caracterizată de atributele :
nume, prenume, salariu și vîrsta.

clasa Angajat { clasa Manager extends Angajat{


String nume; int virsta;
String prenume; }
int salariu;
Rețineți:

1. Java permite doar moștenire simplă, o clasă poate extinde o singură clasă și numai una.

2. Prin moștenire o subclasă preia tot comportamentul unei clase părinte.

3. O clasă părinte poate avea orice număr de subclase.

4. Clasa Obiect este singura clasă în Java care nu are clasă părinte, și este părintele tuturor
claselor.

5. O subclasă moștenește de la clasa părinte toate atributele și metodele care nu sunt private.

6. Prin extinderea unei clase permitem reutilizarea codului.

7. Constructorii NU pot fi moșteniți.


Vizibilitatea membrilor moșteniți. Specificatorul de acces protected.

● În interiorul unei subclase pot fi referiți doar acei membri moșteniți de la superclasă
a căror declarație a fost precedată de specificatorii de acces public sau protected.
Accesul la membrii declarați private nu este permis deși ei fac parte din instanțele
subclasei.

● În general , clienții unei subclase pot referi doar acei membri moșteniți de la
superclasă a căror declarație a fost precedată de specificatorii de acces public

● În general , clienții unei clase nu pot accesa membrii clasei ce sunt declarați ca
fiind protected
Cuvîntul cheie super

Folosim variabila predefinită super în următoarele condiții:


1. pentru a referi o variabilă din clasa părinte: super.<nume_variabilă>
Cuvîntul cheie super

2. pentru apelarea constructorului clasei părinte:super([lista_argumente])


a) apelul constructorului fără argumente din superclasă:
3. pentru apelarea constructorului clasei părinte:super([lista_argumente])
b) apelul constructorului cu argumente din superclasă:
Rețineți:

1. Apelul variabilei super() trebuie să fie prima instrucțiune din corpul constructorului
subclasei.

2. Dacă un constructor nu va invoca explicit constructorul superclasei, compilatorul va


însera automat un apel la constructorul clasei fără parametri. Dacă superclasa nu
are constructor fără argumente veți obține eroare.
Exerciții:
Care este rezultatul programului?
Exerciții:
Care este rezultatul programului?

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