Sunteți pe pagina 1din 14

Clase Java – UNCODED https://uncoded.

ro/clase-java/

 

JAVA , PROGRAMARE

Clase Java
AIRMAN · SEPTEMBER 25, 2019 · 4.8K VIEWS · 6 MINUTE READ

5
SHARES  SHARE 5  TWEET  MAIL  SHARE  SHARE

1 De�nirea unei clase


2 Utilizarea modi�catorilor
3 Declararea variabilelor si implementarea metodelor
4 Polimor�smul
5 Instantierea obiectelor unei clase

De�nirea unei clase


Clasele sunt elemente fundamentale ale oricarei aplicatii Java. Ele reprezinta structuri logice
care de�nesc comportamentul si starea obiectelor.

O clasa este de�nita pentru a descrie un nou tip de date. Dupa de�nirea clasei, aceasta poate �
utilizata pentru a crea obiecte de tipul respectiv. Deci, o clasa reprezinta un sablon pentru un

1 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

obiect, iar un obiect reprezinta o instanta a unei clase.


 

Forma generala pentru declararea unei clase este urmatoarea:

[modificatori_clasa] class nume_clasa [extends super_clasa][implements lista_interfe


// corp_clasa
}

Dupa cum se poate observa, sintaxa de mai sus cuprinde o serie de termeni optionali:
• modi�catori_clasa: de�nesc aria de vizibilitate si drepturile de acces sau anumite caracteristici
ale clasei; pentru o clasa pot � utilizati urmatorii modi�catori: public, abstract, �nal;
• extends super_clasa: precizeaza clasa de baza (superclasa) pentru clasa de�nita; Java permite
doar mostenirea simpla, ceea ce inseamna ca o clasa poate avea doar un singur parinte;
• implements lista_interfete: listeaza interfetele care sunt implementate de noua clasa.

Corpul unei clase poate contine doua tipuri de elemente: date membre (atribute) si functii
membre (metode). Atributele si metodele de�nite intr-o clasa reprezinta membrii clasei.

Utilizarea modi�catorilor
Modi�catorii de vizibilitate si drepturi de acces sunt cuvinte cheie care precizeaza aria de
vizibilitate si drepturile de acces ale clientilor la membrii unei clase. Clienti pot � metodele sau
clasele care acceseaza din exterior un membru.

Modi�catorii au o arie larga de utilizare care poate cuprinde de�nitii de clase, atribute sau
metode. Urmatorii termeni pot � utilizati ca si modi�catori de vizibilitate: public, protected si
private.

Daca nu este precizat un modi�cator de vizibilitate pentru un membru, atunci acesta este
accesibil la nivelul pachetului din care face parte clasa in care acesta se gaseste.

Modi�catorul public utilizat in cadrul declaratiei unei clase face ca aceasta sa �e vizibila de
oriunde. Daca modi�catorul public precede declararea unei variabile sau a unei metode, acestea
sunt vizibile oriunde este vizibila clasa.

2 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

public tip variabilaPublica; 

La nivelul membrilor unei clase poate � utilizat modi�catorul private, care stabileste
vizibilitatea membrilor numai in interiorul clasei in care sunt declarati.

private tip variabilaPrivata;

Modi�catorul protected este utilizat in declararea variabilelor sau a metodelor. Membrii


declarati cu protected sunt accesibili in cadrul clasei, subclaselor sau pachetului din care face
parte clasa.

protected tip variabilaProtejata;

Pentru declararea variabilelor de clasa (atribute statice) se poate utiliza un modi�cator special,
static. Variabilele declarate cu static sunt partajate de catre obiectele clasei. Daca modi�catorul
static apare in declaratia unei metode, vorbim despre metode de clasa, metode care pot �
apelate si fara a instantia obiecte ale clasei.

public static tip valoarePartajata;

Un alt modi�cator care este utilizat in cazul membrilor unei clase este �nal. Variabilele
declarate cu �nal au o valoare constanta, care nu poate � modi�cata prin program. Atunci cand
o metoda este declarata cu modi�catorul �nal nici o alta clasa nu va putea suprade�ni metoda,
adica nu va putea � rede�nita intr-o subclasa.

public static final int MAX = 256;

O clasa care contine metode neimplementate poarta numele de clasa abstracta si se declara
utilizand modi�catorul abstract. Metodele abstracte (neimplementate) continute de o clasa
abstracta se declara folosind modi�catorul abstract.

3 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

public abstract double aria(); 

Pe baza modi�catorilor de vizibilitate pot � de�nite patru niveluri de acces:


• public;
• private;
• protected;
• package (implicit).

Declararea variabilelor si implementarea metodelor


In limbajul Java orice clasa contine doua tipuri de elemente (membri): atribute si metode.

Atributele reprezinta aspecte individuale care diferentiaza un obiect de altul si determina modul
de a�sare, starea sau calitatile unui obiect. Atributele din interiorul unei clase pot � statice si
non-statice.

Atributele statice sunt asociate clasei si sunt partajate de toate obiectele acesteia. Aceste
atribute pot � utilizate chiar si in situatia in care nu se instantiaza obiecte ale clasei. Se mai
numesc si variabile de clasa deoarece aceste atribute apartin clasei si nu unui obiect anume.
Pentru a declara o variabila de clasa trebuie utilizat modi�catorul static.

Atributele non-statice sau variabilele instanta reprezinta cel de-al doilea tip de atribute dintr-o
clasa. Fiecare instanta a unei clase va detine o copie a variabilelor instanta care sunt de�nite in
respectiva clasa. De asemenea, �ecare obiect va avea propriile valori pentru �ecare atribut non-
static.

1 class Cerc {
2
3 // variabila clasa
4 static final double PI = 3.14;
5 // variabile instanta
6 double x;
7 double y;
8 double raza;
9
10 }

4 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

Cerc.java hosted with by GitHub view raw


 

Dupa cum se poate observa, declararea unei variabile are urmatoarea forma:

[modificatori] tip_variabila nume_variabila [ = valoare_initializare];

In functie de tipul modi�catorilor prezenti in declaratia unui atribut se poate preciza nivelul de
acces la acel atribut, tipul atributului (instanta, clasa) sau se poate stabili daca atributul este o
constanta (variabila �nala).

Metodele unei clase de�nesc comportamentul clasei respective. In mod similar atributelor,
intr-o clasa pot � de�nite doua tipuri de metode: statice sau metode clasa si non-statice sau
metode instanta.

Metodele statice se declara utilizand modi�catorul static si pot � apelate chiar si in cazul in care
nu au fost instantiate obiecte ale clasei. Deoarece acest tip de metode pot � executate si in
absenta obiectelor, ele nu vor � referite de variabile instanta. Metoda main() trebuie declarata
folosind modi�catorul static.

1 class Cerc {
2
3 static final double PI = 3.14;
4 static int count = 0;
5 double x;
6 double y;
7 double raza;
8
9 // metoda non-statica
10 public double aria() {
11 return PI * raza * raza;
12 }
13
14 // metoda statica
15 static int nrObiecte() {
16 return count;
17 }
18
19 }

5 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

Cerc.java hosted with by GitHub view raw


 

Declararea unei metode se face respectand urmatoarea sintaxa generala:

[modificatori] tip_metoda nume_metoda( [lista parametri] ) [throws tip_exceptie1


// corp metoda
}

Clauza throws este utilizata pentru declararea exceptiilor care pot rezulta in urma executiei unei
metode. Exceptiile reprezinta conditii care apar la rulare si necesita oprirea programului, �ind
tratate prin obiecte ale casei java.lang.Throwable.

Polimor�smul
Unul din principiile de baza in programarea orientata pe obiecte este polimor�smul.
Polimor�smul speci�ca situatia in care un nume se refera la doua metode diferite. Limbajul Java
permite de�nirea a doua tipuri de polimor�sm:
• tipul de supraincarcare;
• tipul de suprade�nire.

Polimor�smul de supraincarcare apare la de�nirea de metode cu acelasi nume in cadrul unei


clase. Diferenta intre metode se face prin numarul de parametri sau tipurile diferite ale acestor
parametri. Nu poate � realizata supraincarcarea prin utilizarea de tipuri returnate diferite pentru
metode.

1 class Carte {
2
3 String titlu;
4 String autor;
5
6 Carte() {
7 titlu = " ";
8 autor = " ";
9 }
10 Carte(String titlu, String autor) {
11 this.titlu = titlu;

6 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

12 this.autor = autor;

13 } 
14
15 void fisaCarte() {
16 System.out.println("Titlu: " + titlu);
17 System.out.println("Autor: " + autor);
18 }
19 void fisaCarte(int id) {
20 System.out.println("Id: " + id);
21 System.out.println("Titlu: " + titlu);
22 System.out.println("Autor: " + autor);
23 }
24 public static void main(String[] args) {
25 Carte c1 = new Carte("Morometii", "Marin Preda");
26 Carte c2 = new Carte("Fratii Jderi", "Mihail Sadoveanu");
27 c1.fisaCarte();
28 c1.fisaCarte(1);
29 c2.fisaCarte(2);
30 }
31
32 }

Carte.java hosted with by GitHub view raw

Cuvantul cheie this returneaza o referinta catre obiectul curent. In interiorul metodei
constructor this este utilizat pentru a face diferenta intre variabilele de instanta si variabilele
locale, deoarece acestea au aceeasi denumire.

this.titlu = titlu;

Polimor�smul de suprade�nire apare in momentul in care metoda unei clase are acelasi nume si
aceeasi semnatura cu o metoda din clasa de baza. Semnatura unei metode este data de numarul
parametrilor, tipul si ordinea acestora. Spunem ca metoda din clasa derivata suprade�neste
metoda din clasa de baza, daca numele si semnaturile metodelor coincid.

1 package ro.virtualcampus.person;
2
3 public class Persoana {
4
5 private String nume;

7 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

6 private int varsta;


7 private double inaltime; 
8
9 public Persoana() {
10 this("Necunoscut", 0, 0.0);
11 }
12 public Persoana(String nume, int varsta, double inaltime) {
13 this.nume = nume;
14 this.varsta = varsta;
15 this.inaltime = inaltime;
16 }
17 public Persoana(String nume) {
18 this(nume, 0, 0.0);
19 }
20
21 public String getNume() {
22 return this.nume;
23 }
24 public int getVarsta() {
25 return varsta;
26 }
27 public double getInaltime() {
28 return inaltime;
29 }
30 public void sePrezinta() {
31 System.out.printf("Numele meu este %s.%n", this.nume);
32 }
33
34 }

Persoana.java hosted with by GitHub view raw

Clasa Student introduce prin intermediul polimor�smului metoda sePrezinta(). Aceasta


suprascrie metoda din superclasa Persoana care are acelasi nume si aceeasi semnatura.

1 package ro.virtualcampus.person;
2
3 public class Student extends Persoana {
4
5 private double medie;
6 private String facultate;
7
8 public Student() {
9 super();

8 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

10 this.medie = 0.0;

11 this.facultate = null; 
12 }
13 public Student(String nume, int varsta, double inaltime, double medie, String facultate
14 super(nume, varsta, inaltime);
15 this.medie = medie;
16 this.facultate = facultate;
17 }
18
19 public double getMedie() {
20 return medie;
21 }
22 public String getFacultate() {
23 return facultate;
24 }
25
26 @Override
27 public void sePrezinta() {
28 super.sePrezinta();
29 System.out.printf("Sunt student la facultatea %s.%n", getFacultate());
30 }
31 public void sePrezinta(String salut) {
32 System.out.printf("%s! ", salut);
33 this.sePrezinta();
34 }
35
36 }

Student.java hosted with by GitHub view raw

Cuvantul cheie super permite accesarea atributelor si metodelor superclasei. Astfel, in


constructorul din subclasa se poate accesa constructorul din clasa de baza.

1 package ro.virtualcampus.person;
2
3 class Aplicatie {
4
5 public static void main(String[] args) {
6 Persoana vp = new Persoana("Virgil Popescu", 45, 1.68);
7 Student db = new Student("Doria Banciu", 35, 1.67, 7.80, "ETTI");
8 vp.sePrezinta();
9 db.sePrezinta("Buna zua");
10 }
11

9 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

12 }

Aplicatie.java hosted with by GitHub

view raw

Numele meu este Virgil Popescu.


Buna ziua! Numele meu este Doria Banciu.
Sunt student la facultatea ETTI.

Instantierea obiectelor unei clase


De�nirea unei clase presupune crearea unui nou tip de date. Acesta poate � utilizat pentru
declararea de obiecte de acest tip. Crearea obiectelor se realizeaza prin instantierea unei clase
si presupune doua etape: declarare si instantiere.

Prima etapa presupune declararea tipului de data pentru obiectul nou creat.

nume_clasa nume_obiect;

Cea de-a doua etapa este realizata prin intermediul operatorului de instantiere new. Operatorul
new aloca dinamic memorie pentru obiectul creat si returneaza o referinta catre acesta. Tot in
aceasta etapa este apelat unul din constructorii clasei, care initializeaza starea unui obiect
imediat dupa crearea sa.

nume_obiect = new constructor();

Crearea unui obiect poate � realizata si intr-o singura linie de cod, de genul:

nume_clasa nume_obiect = new constructor();

Constructorul este un tip special de metoda, care are acelasi nume ca si clasa in care este de�nit
si care nu are tip returnat. Metodele constructor sunt apelate in momentul in care sunt create
instante ale clasei. Daca nu este de�nita o metoda constructor pentru o clasa, compilatorul va

10 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

crea o astfel de metoda. Constructorul implicit nu are lista de parametri, iar corpul metodei este
 
vid. Rolul principal al constructorului este acela de a realiza initializarea variabilelor instanta ale
unui obiect, cand acesta este creat.

1 class Cerc {
2
3 static final double PI = 3.14;
4 static int count = 0;
5 int x;
6 int y;
7 int raza;
8
9 // metoda constructor 1
10 Cerc() {
11 x = 0;
12 y = 0;
13 raza = 0;
14 }
15 // metoda constructor 2
16 Cerc(int x0, int y0, int raza0) {
17 x = x0;
18 y = y0;
19 raza = raza0;
20 }
21
22 // metoda non-statica
23 public double aria() {
24 return PI * raza * raza;
25 }
26 // metoda statica
27 static int nrObiecte() {
28 return count;
29 }
30
31 public static void main(String[] args) {
32 Cerc c = new Cerc(2, 5, 4);
33 System.out.println(c.raza);
34 }
35
36 }

Cerc.java hosted with by GitHub view raw

11 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

Referirea atributelor si metodelor de instanta pentru un obiect se face astfel:


 

nume_obiect.atribut;
nume_obiect.nume_metoda();

Limbajul Java permite de�nirea de constructori multipli intr-o clasa, prin intermediul
polimor�smului. De exemplu, intr-o clasa care de�neste numere complexe putem utiliza un
constructor pentru a initializa partea reala si partea imaginara cu valoarea 0.0, si un alt
constructor care permite utilizatorului sa speci�ce valorile initiale pentru partea reala, respectiv
imaginara.

1 class Complex {
2
3 Complex() {
4 parteaReala = 0.0;
5 parteaImaginara = 0.0;
6 }
7 Complex(double real, double imag) {
8 parteaReala = real;
9 parteaImaginara = imag;
10 }
11
12 private double parteaReala;
13 private double parteaImaginara;
14
15 }

Complex.java hosted with by GitHub view raw

5
SHARES  SHARE 5  TWEET  MAIL  SHARE  SHARE

TAGS
#ABSTRACT #CLASS #CONSTRUCTOR #FIELD #FINAL #INSTANCE #METHOD #MODIFIERS

#NEW #OBJECT #PRIVATE #PROTECTED #PUBLIC #STATIC

12 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

 JAVA , PROGRAMARE

Tablouri Java
AIRMAN · SEPTEMBER 23, 2019

VEZI ARTICOL

JAVA , PROGRAMARE

Ierarhii de clase Java


AIRMAN · OCTOBER 12, 2019

VEZI ARTICOL

ARTICOLE SIMILARE

JAVA, PROGRAMARE JAVA, PROGRAMARE

Clase abstracte si interfete Java Ierarhii de clase Java


AIRMAN · OCTOBER 16, 2019 AIRMAN · OCTOBER 12, 2019

LEAVE A REPLY

YOUR EMAIL ADDRESS WILL NOT BE PUBLISHED. REQUIRED FIELDS ARE MARKED *

13 of 14 7/12/23, 07:40
Clase Java – UNCODED https://uncoded.ro/clase-java/

*

COMMENT

NAME *

EMAIL *

WEBSITE

SAVE MY NAME, EMAIL, AND WEBSITE IN THIS BROWSER FOR THE NEXT TIME I COMMENT.

POST COMMENT

TERMENI SI CONDITII CONFIDENTIALITATE

© 2018 VIRTUALCAMPUS.RO

14 of 14 7/12/23, 07:40

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