Clase abstracte

Clasele abstracte conțin în declarația lor modificatorul  abstractClasele abstracte nu pot fi instanțiate. Remarcăm însa că pot exista clase care nu pot fi instanțiate deși nu sunt abstracte, cum sunt, de exemplu, clasele care nu au decât constructori privați.

Cu toate că clasa abstractă nu poate fi instanțiată, se pot declara variabile aparținând unor clase abstracte. Acestor variabile li se pot da însa ca valori numai referințe către instanțe ale unor subclase concrete. De exemplu, daca A este o clasă abstracta, iar B este o subclasă concreta a clasei A, atunci este corectă declarația
    A a1=new B();
 
Din punct de vedere conceptual, clasa abstractă modelează un concept general, care trebuie apoi dezvoltat prin subclase. Subclasele unei clase abstracte pot fi, la rândul lor, abstracte sau concrete. De exemplu, clasa abstractă FiguraPlana poate avea ca subclase clasele Cerc, Elipsa, Poligon etc. 

Din punct de vedere al progrămarii, clasa abstractă conține cel puțin o metodă abstractă, adică o metodă pentru care s-a declarat numai antetul, fără să i se definească și corpul. O clasă poate să conțină o metodă abstractă în mai multe moduri: 
    a/ în corpul clasei este declarată explicit o metodă abstractă; 
    b/ clasa mostenește de la superclasa ei o metodă abstractă, care nu este definita nici în corpul clasei curente; 
    c/ clasa implementeaza o interfață, dar nu definește una sau mai multe din metodele acesteia. 

Dacă apare o astfel de situație, iar clasa nu este declarată în mod explicit abstractă, se genereaza o eroare la compilare. 

Declararea unei metode abstracte:
    - antetul metodei trebuie sa conțina modificatorul  abstract;
    - corpul metodei se înlocuiește prin caracterul ';' (punct și virgulă).
 
Exemplu:
În fișierul FiguriPlane.java  sunt declarate clasa abstractă FiguraPlana și clasele instanțiabile Cerc și Patrat. Este declarată, de asemenea clasa-aplicație în care se testează aceste clase. 



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați