CATEGORII DOCUMENTE |
Din punct de vedere tehnic constructorii nu pot fi suprascrisi.Pentru ca au totdeauna acelasi nume ca al clasei curente, metodele constructor nu se mostenesc ci se creaza altele noi.Acest sistem este multumitor in marea majoritate a cazurilor ; atunci cand este apelata metoda constructor a clasei se apeleaza si metoda constructor cu aceeasi semnatura pentru toate superclasele.Din aceasta cauza initializarea se face pentru toate partile clasei pe care o mostenim.
Totusi, atunci cand definim metode constructor pentru clasa noastra putem modifica felul in care este initializat obiectul nu doar prin initializarea noilor variabile adaugate clasei, ci si prin modificarea continutului variabilelor deja prezente.Pentru aceasta vom apela explicit metodele constructor ale superclasei si apoi vom modifica variabilele dorite.
Pentru a apela o metoda obisnuita apartinand superclasei vom folosi sintaxa super.nume_metoda(lista_argumente).Deoarece metodele constructor nu au nume sub care pot fi apelate vom folosi urmatoarea forma:
super(arg1, arg2 ,);
Retinem ca Java are o regula stricta pentru folosirea metodei super():aceasta trebuie sa sie prima instructiune folosita in cadrul constructorului.Daca nu apelam super() explicit in cadrul constructorului Java face acest lucru implicit, folosind super() fara argumente.Deoarece apelarea super() trebuie sa fie prima instructiune nu putem folosi un cod de genul:
if (conditie==true)
super(1, 2, 3); // apelarea unui constructor al superclasei
else
super(1, 2); // apelarea unui alt constructor
La fel ca in folosirea this() intr-o metoda constructor, super() apeleaza metoda constructor pentru superclasa imediat urmatoare (care la randul sau va apela constructorul superclasei sale si asa mai departe).Retinem ca in superclasa trebuie sa existe un constructor cu semnatura respectiva pentru ca apelul super() sa functioneze.Compilatorul Java verifica aceste lucruri atunci cand incercam sa compilam fisierul sursa.
Nu trebuie sa apelam constructorul din superclasa care are aceeasi semnatura cu cea a constructorului clasei noastre ; trebuie doar sa apelam constructorul pentru valorile pe care dorim sa le initializam.De fapt, putem crea o clasa care are constructori cu semnaturi total diferite de oricare dintre constructorii superclasei.
In exemplul urmator vom prezenta o clasa PunctCuNume care extinde clasa Point a pachetului java.awt.Clasa Point are un singur constructor care preia argumentele x si y si returneaza un obiect Point.PunctCuNume contine o variabila de instanta suplimentara si defineste un constructor care initializeaza x, y si numele.
import java.awt.Poin;
class PunctCuNume (int x, int y, String nume)
public static void main(String argumente[])
}
Metoda constructor definita aici pentru PunctCuNume apeleaza metoda constructor a clasei Point pentru a initializa variabilele de instanta x si y.Chiar daca am putea initializa si singuri, explicit, variabilele x si y exista posibilitatea sa existe si alte lucruri care s-ar intampla la initilizarea obiectelor Point ; din aceasta cauza este mai bine sa apelam metodele constructor aflate deasupra in ierarhie, pentru a fi siguri ca totul se configureaza corect.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1128
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved