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;
9. Constructorii și câmpurile clasei nu pot fi abstract.

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
Rețineți ! 1. Metodele abstracte conţin semnul ,,;’’ ce înlocuiește corpul metodei;
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 Orientată spre Obiecte, Limbajul Java, 2019 -2020 CEITI
Exerciții
1. Analizați porțiunile de cod propuse și argumentați dacă sunt corecte sau nu. În caz că nu sunt
corecte explicați cum ați corecta eroarea depistată.

abstract class AbstractClass{


abstract void abstractMethod();
}
class ConcreteClass extends AbstractClass{
void abstractMethod(){
System.out.println("Abstract Method Implemented");
}}
class Abstraction{
public static void main(String[] args){
AbstractClass A = new AbstractClass();
ConcreteClass C = new ConcreteClass();
}}
class AbstractClass{
void abstractMethod();
abstract void abstractMethod();
}
abstract class AbstractClass{
void methodOne(){
}}
abstract class AbstractClass{
void methodOne(){
}
void methodTwo(){
}
abstract void methodThree();
abstract void methodFour();
}
abstract class AbstractClass{
private abstract void abstractMethodOne();
}
abstract class AbstractClass{
abstract int i;
abstract AbstractClass(){
}}
abstract class AbstractClass{
static abstract void abstractMethod();
}

Surse:
1. http://javaconceptoftheday.com/garbage-collection-finalize-method-java/
2. https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
3. https://www.javatpoint.com/abstract-class-in-java

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 3 © MUSTEAȚĂ Victoria

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

  • Agentii de Publicitate
    Agentii de Publicitate
    Document12 pagini
    Agentii de Publicitate
    Данилов Алина
    Încă nu există evaluări
  • TI Cap
    TI Cap
    Document471 pagini
    TI Cap
    Данилов Алина
    Încă nu există evaluări
  • eduturile - копия
    eduturile - копия
    Document19 pagini
    eduturile - копия
    Данилов Алина
    Încă nu există evaluări
  • Etica Lecția 1 2 3 Teme Pe Acasă
    Etica Lecția 1 2 3 Teme Pe Acasă
    Document4 pagini
    Etica Lecția 1 2 3 Teme Pe Acasă
    Данилов Алина
    Încă nu există evaluări
  • Articol
    Articol
    Document5 pagini
    Articol
    Данилов Алина
    Încă nu există evaluări
  • 1 Lectie Generalitati BC 2021
    1 Lectie Generalitati BC 2021
    Document44 pagini
    1 Lectie Generalitati BC 2021
    Данилов Алина
    Încă nu există evaluări
  • Laborator 1
    Laborator 1
    Document9 pagini
    Laborator 1
    Данилов Алина
    Încă nu există evaluări
  • De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    Document4 pagini
    De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    Данилов Алина
    Încă nu există evaluări
  • 10 - Tipuri de Clase
    10 - Tipuri de Clase
    Document6 pagini
    10 - Tipuri de Clase
    Данилов Алина
    Încă nu există evaluări
  • Power Point
    Power Point
    Document13 pagini
    Power Point
    Данилов Алина
    Încă nu există evaluări
  • Bazele Compoziției
    Bazele Compoziției
    Document8 pagini
    Bazele Compoziției
    Данилов Алина
    Încă nu există evaluări
  • 5 Mostenirea
    5 Mostenirea
    Document3 pagini
    5 Mostenirea
    Данилов Алина
    Încă nu există evaluări
  • Danilov Alina P-1831 Lab 4
    Danilov Alina P-1831 Lab 4
    Document2 pagini
    Danilov Alina P-1831 Lab 4
    Данилов Алина
    Încă nu există evaluări
  • Constructori
    Constructori
    Document4 pagini
    Constructori
    Ciobanu Stanislav
    Încă nu există evaluări
  • Arme de Nimicire În Masă
    Arme de Nimicire În Masă
    Document18 pagini
    Arme de Nimicire În Masă
    Данилов Алина
    Încă nu există evaluări
  • 7 Interfete
    7 Interfete
    Document6 pagini
    7 Interfete
    Данилов Алина
    Încă nu există evaluări
  • 9 - Clase Abstracte
    9 - Clase Abstracte
    Document3 pagini
    9 - Clase Abstracte
    Данилов Алина
    Încă nu există evaluări
  • 1 10 20 StiluriProgramare
    1 10 20 StiluriProgramare
    Document7 pagini
    1 10 20 StiluriProgramare
    Данилов Алина
    Încă nu există evaluări
  • 4 Serializare
    4 Serializare
    Document8 pagini
    4 Serializare
    Данилов Алина
    Încă nu există evaluări
  • Lucru Individual
    Lucru Individual
    Document2 pagini
    Lucru Individual
    Данилов Алина
    Încă nu există evaluări
  • Laborator 3
    Laborator 3
    Document9 pagini
    Laborator 3
    Данилов Алина
    Încă nu există evaluări
  • Regula Cramer, Metoda Matriciala
    Regula Cramer, Metoda Matriciala
    Document5 pagini
    Regula Cramer, Metoda Matriciala
    Данилов Алина
    Încă nu există evaluări
  • Reformele Modernizatoare Din Imperiul Rus
    Reformele Modernizatoare Din Imperiul Rus
    Document4 pagini
    Reformele Modernizatoare Din Imperiul Rus
    Данилов Алина
    Încă nu există evaluări
  • Simbolismul Bacovian
    Simbolismul Bacovian
    Document2 pagini
    Simbolismul Bacovian
    Данилов Алина
    Încă nu există evaluări