clasa abstractă

o clasă abstractă este o clasă declarată abstractă — poate sau nu poate include metode abstracte. Clasele abstracte nu pot fi instanțiate, dar pot fi subclasate. O clasă abstractă poate avea câmpuri statice și metode statice. Când o clasă abstractă este subclasată, subclasa oferă de obicei implementări pentru toate metodele abstracte din clasa sa părinte. Cu toate acestea, dacă nu, atunci subclasa trebuie, de asemenea, declarată abstractă.,

O metodă abstractă este o metodă care este declarată fără o punere în aplicare (fără bretele și urmată de un caracter punct și virgulă), astfel:

abstract void sum(int a, int b);

luați în Considerare utilizarea de clase abstracte dacă oricare dintre aceste situații se aplică în situația dumneavoastră:

  1. doriți să partajați codul strâns legate între mai multe clase.
  2. vă așteptați ca clasele care vă extind clasa abstractă să aibă multe metode sau câmpuri comune sau să necesite modificatori de acces, alții decât public (cum ar fi protejat și privat).
  3. doriți să declarați câmpuri non-statice sau non-finale., Acest lucru vă permite să definiți metode care pot accesa și modifica starea obiectului din care fac parte.

interfață

o interfață este doar declarația metodelor unui obiect; nu este implementarea. Într-o interfață, definim ce fel de operație poate efectua un obiect. Aceste operații sunt definite de clasele care implementează interfața. Interfețele formează un contract între clasă și lumea exterioară, iar acest contract este pus în aplicare la momentul construirii de către compilator.,luați în considerare utilizarea interfețelor dacă oricare dintre aceste declarații se aplică situației dvs.:

  1. vă așteptați ca clasele care nu au legătură să implementeze interfața dvs. De exemplu, interfețele comparabile și Cloneable sunt implementate de multe clase independente.
  2. doriți să specificați comportamentul unui anumit tip de date, dar nu vă preocupați de cine implementează comportamentul acestuia.
  3. doriți să profitați de mai multe moșteniri.,

publicat inițial iunie 2016

Lectură suplimentară

  • când (nu) se utilizează clase abstracte Java
  • Java: interfață vs. clasă abstractă
  • cum se alege între clase de interfață și Abstract în Java