Sunteți pe pagina 1din 3

Programarea Orientată spre Obiecte, Limbajul Java, 2019 -2020 CEITI

Tema9. Clase abstracte.


Ce sunt clasele abstracte?
Definiție: O clasă abstractă este o clasă declarată abstract.
Clasa abstractă nu poate fi instanţiată, dar poate avea subclase. Se folosește atunci când dorim să
stabilim o interfață comună pentru a putea crea funcționalitate diferită pentru fiecare subtip şi
pentru a ști ce anume au clasele derivate în comun.
Deseori când lucrăm cu clasele derivate apare problema că pentru superclasă nu putem preciza
implementarea unei metode pentru că subclasele sale au nevoie de implementare specifică
fiecăreia. În acest caz pot fi utilizate clasele abstracte.
Java are clase abstracte predefinite. Una fiind clasa abstractă Number, ce se conţine în pachetul
java.lang. Această clasă abstractă descrie un număr la general, dar într-o aplicație avem
nevoie de număr de un anumit tip (întreg, real, ș.a). Fiecare tip de număr are caracteristicele sale
însă toate exprimă valori numerice, fiecare în felul său. Clasa abstractă Number servește ca
superclasă pentru clasele concrete Byte, Double, Float, Integer, Short şi Long , denumite
și clase Wrapper sau clase înfășurătoare.
Obiecte de tip Number nu putem instanţia, însă putem instanţia obiecte de tip Integer,
Double, Float.

Cum declarăm o clasă abstractă?


Sintaxa:
[public] abstract class numeClasaAbstracta
[ extends Superclasa ]
{
// declaratii de atribute si metode
}
1. Clasa abstractă nu conţine modificatorul final;
2. Clasa abstractă conţine metode abstracte, nu au implementare în clasa dată;
3. Clasa abstractă poate să nu aibă nici o metodă abstractă;
4. Clasa abstractă nu poate să fie instanţiată, în schimb poate avea orice număr de
subclase;
Rețineți !

5. Orice clasă ce are măcar o metodă abstractă trebuie să fie şi ea abstractă;


6. O clasă nu poate fi concomitent finală şi abstractă;
7. Subclasa unei clase abstracte trebuie să conțină cod pentru toate metodele abstracte
declarate în superclasa abstractă , în caz contrar subclasa trebuie să fie şi ea
abstractă;
8. Clasa abstractă impune subclasele sale să implementeze metode comune şi le
permite să implementeze şi metode proprii;

Ce sunt metodele abstracte


O metodă abstractă este o metodă fără implementare şi poate fi doar în corpul unei clase
abstracte, conţine obligatoriu cuvîntul rezervat abstract în semnătura acesteia.
Cum declarăm o clasă abstractă?

abstract tipMetoda numeMetoda ([lista_parametri_formali]);

opreavictoria86@gmail.com 1 © MUSTEAȚĂ Victoria


Programarea Orientată spre Obiecte, Limbajul Java, 2019 -2020 CEITI
1.
Metodele abstracte conţin semnul ,,;’’ ce înlocuiește corpul metodei;
Rețineți !

2.
O metodă declarată public poate fi abstractă;
3.
O metodă statică nu poate fi abstractă , pentru că nu poate fi rescrisă;
4.
Metodele abstracte nu pot fi private pentru că scopul acestora este de a fi
implementate întro clasă copil.
Exemplu:
Creați un program Java format din:
1. clasa abstractă Figura care va conţine 2 metode publice abstracte fără parametri : double
Arie() şi double Perimetru().
2. clasa Cerc ce extinde clasa abstractă Figura şi va conţine variabila privată raza, constructorul
clasei cu un parametru, metodele Arie() şi Perimetru() implementate.
3. clasa Triunghi ce extinde clasa Figura şi conţine variabila privată latura, constructorul clasei
cu un parametru, metodele din Figura implementate.
4. clasa TestFigura.

abstract class Figura{


public abstract double Arie();
public abstract double Perimetru();
}
class Cerc extends Figura{
private double raza;
public Cerc(int raza){ this.raza = raza;}
public double Arie(){
return Math.PI*raza*raza;
}
public double Perimetru(){
return 2*Math.PI*raza;
}}
class Triunghi extends Figura{
private double latura;
public Triunghi(double latura){this.latura = latura;}
public double Arie(){
return Math.sqrt(3)/4*latura*latura;
}
public double Perimetru(){
return 3*latura;
}}

public class TestFigura {


public static void main(String[] args) {
System.out.println("-------------------------------------");
Cerc obCerc = new Cerc(3);
System.out.println("Aria cercului = "+obCerc.Arie());
System.out.println("Perimetru cercului"+obCerc.Perimetru());

System.out.println("-------------------------------------");
Triunghi obTriunghi = new Triunghi(5);
System.out.println("Aria triunghi = "+obTriunghi.Arie());
System.out.println("Perim. Triunghi "+obTriunghi.Perimetru());
}}

opreavictoria86@gmail.com 2 © MUSTEAȚĂ Victoria


Programarea Orientata Spre Obiecte, Limbajul Java, 2019-2020 CEITI

Resurse:
Lecție video în care am explicat această temă:
1. https://youtu.be/LuDwTWfm3Uk -teorie
2. https://youtu.be/NjsevzVY6OE - exemplu practic

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


3

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