Constructori
Are aceeasi denumire ca si clasa ;
Nu intoarce nici o valoare ;
Are ca rezultat alocarea unei adrese ;
Are ca scop creearea obiectelor si initializarea datelor member(eventual alte operatii);
Daca nu se creeaza un constructor implicit, creeaza programul unul explicit;
Supraincarcarea :
- se poate face pe constructor si pe metode ;
- in toate variantele de supraincarcare ale unei metode se pastreaza aceeasi denumire a functiei;
- fiecare metoda(constructor) supraincarcata trebuie sa aiba o lista unica de argumente(ca numar
si/sau tipuri si/sau ordine de aparitie) ;
Cuvantul cheie THIS
III.
IV.
Ex : PI este data membre statica a clasei Math ; cos, sin sunt functii (metode) statice ale
clasei Math
Functiile statice si datele membre statice pot fi apelate/accesate utilizand direct denumirea
clasei sau un obiect ;
Datele membre statice sunt commune tuturor obiectelor de acelasi tip.
Functiile statice nu pot modifica(accesa) datele member ne-statice;
Vectori
O variabila de tip vector contine o referinta (este un obiect); afirmatie valabila si cand este
vorba de vectori de primitive.
Alocarea lor de face explicit (de programator) cu NEW , sau implicit (in program)
mentionand componentele continute ;
Orice obiect de tip vector contine o data membra length care contine lungimea
vectorului ;
indexul fiind de la 0 la length-1.
Ex.
V.
Librarii
Libraria este un set de fisiere organizate intr-o structura ierarhica de directoare;
Utilizarea librariilor se face cu import Ex. import java.util.*
Reguli de creare :
Nume global domeniul de internet ( asa se asigura unicitatea) ;
Nume specializat nume proiect
Ex. package com.ibm.jdom
VI.
Specificatori de acces
Public
Package
Protected
Private
Specificatorii pot fi utilizati pentru clase, date membre si functii.
O clasa normala pot avea 2 specificatori : public sau niciunul ->package
Intr-un fisier poate exista o singura calsa cu specific public , iar acesta trebuie sa aiba numele
identic cu numele fisierului.
Ex. In fisierul titi.java exista o clasa cu numele public class titi
Public clasa poate fi folosita de oriunde : din interiorul sau din exteriorul librariei.
Package (este specificator implicit) are doua semnificatii :
Pentru exteriorul librariei este lafel ca Private
Upcasting, polimorfism
Motenirea: extends
Sintax:
class NumeClasaDerivata extends NumeClasaDeBaza {
// codul clasei derivate
Motenire:
n clasa derivat vor exista implicit datele membre i metodele definite n clasa de baz (drepturile
de folosire a datelor / metodelor clasei de baz n clasa derivat sunt funcie de specificatori)
Suprascriere rescrierea unei metode din clasa de baza in clasa derivata.
!!! Denumirea functiei trebuie sa fie aceeasi, iar prototipul identic (numar, tip si ordinea parametrilor)!!!
Cuvantul cheie super
dac clasa de baz nu are constructor fr parametri n constructorul clasei derivate trebuie fcut un
apel explicit ctre constructorul clasei de baz
apelul din constructorul clasei derivate ctre constructorul cu parametri al clasei de baz se face
folosind super
apelul din constructorul clasei derivate ctre constructorul cu parametri al clasei de baz trebuie sa
fie n prima linie (de cod) a constructorului clasei derivate
Cuvantul cheie final
aplicabil pentru date membre / metode / clase
primitive / obiecte valoare constanta nemodificabila / referinta nemodificabila (nu poate fi
realocat)
metode nu pot fi suprascrise; metode private sunt implicit final
clase nu pot fi folosite ca si clase de baza;
primitive / obiecte valoare constanta nemodificabila /referinta nemodificabila (nu poate fi
realocat)
valoarea nu trebuie neaparat cunoscuta la momentul compilarii (cazul generarilor aleatoare)
variabile statice / nonstatice nemodificabile per clasa / obiect
Polimorfism presupune detectarea tipului obiectului continut intr-o variabila de tipul unei clase de
baza; daca se apeleaza o metoda pe variabila mentinuta mai intai se detecteaza tipul de obiect, iar apoi
apelarea metodei se face pe acel obiect.
Upcasting si Polimorfism ajuta la implementarea de programe generale.
VIII.
Metode abstracte:
- nu au decat prototip
- numele metodei este precedat de cuvantul cheie abstract
- casele derivate dintr-o clasa ce contine metode abstracte trebuie sa suprascrie obligatoriu acele
metode
Clase abstracte
- sunt precedate de cuvantul cheie abstract
- clasele care contin metode abstracte trebuie declarate abstracte
- clasele abstracte nu pot creea obiecte
- o clasa poate fi declarata abstracta chiar daca nu contine metode abstracte (scopul este de a creea
obiecte)
IX.
Interfete
Mostenire multipla
O clasa poate mosteni o singura clasa si/sau mai multe interfete.
XI.
Tratarea erorilor
Este cautata prima potrivire, primul bloc catch pentru care tipul exceptiei se potriveste cu tipul
obiectului exceptie aruncat;
Este executat setul de intructiuni corespunzator blocului catch selectat (intructiunile corespunzatoare
celorlalte blocuri nu sunt executate).
Crearea exceptiilor:
Class ExceptieSimpla extends Exception{}
Clauza throws:
void f() throws ExceptieSimpla{//.....}
Rearuncarea unei exceptii:
Blocurile catch de pe acelasi nivel cu blocurile in care se face rearuncarea sunt ignorate.
Tratarea exceptiei rearuncate trebuie facuta la un nivel superior.
Clauza finally:
try{//.....
catch(Exceptie1 id1){......}
.......
finally{......}
//intrunctiuni care se executa mereu
}
Clauza finally poate exista si fara blocuri catch
Instructiunile sunt executate mereu (chiara daca exceptia a fost sau nu tratata, chiar daca exceptia a
fost sau nu prinsa, etc).
XII.
Generice
! Cnd se aloc un vector este necesar cunoaterea de informaii referitoare la tipul elementelor !