Ce este clasa abstractă în Java?

  • Clasele abstracte sunt ca orice alte clase normale din java. Diferența majoră dintre clasa abstractă și clasa normală este crearea clasei abstracte de care trebuie să folosim cuvântul cheie „ABSTARCT”. Este o separare a implementării clasei.
  • Ei au definit caracteristicile foarte comune ale subclaselor sale. Un astfel de tip de clasă făcută drept clasă abstractă.
  • Cel mai important nu putem crea un obiect al unei clase abstracte.
  • Clasele abstracte pot conține metode abstracte, precum și non-abstracte. Acestea nu pot conține un corp al metodei abstracte, care poate fi furnizat doar de subclasă. Dacă subclasa nu oferă implementarea metodei abstracte, trebuie să o facem în mod explicit.
  • Cu alte cuvinte, dacă o clasă conține o metodă abstractă, atunci ea trebuie să se definească ca ABSTARCT.
  • Folosind clase abstracte putem grupa mai multe clase java împreună, de asemenea, optimizează codul și face codul mai lizibil și reduce redundanța. De asemenea, oferă un șablon pentru clasele viitoare.

Sintaxa clasei abstracte în Java

Cum funcționează clasa abstractă în Java?

  • O clasă abstractă are o metodă abstractă și o metodă non-abstractă, adică o metodă abstractă fără corp și ele pot avea metode și cu implementare.
  • O clasă abstractă este utilizată pentru a furniza cea mai comună caracteristică specifică diferitelor clase. Subclasele pot oferi o implementare diferită a acestor metode abstracte în funcție de nevoile sau cerințele lor.
  • Nu putem crea un obiect al unei clase abstracte folosind operatorul „nou”, dar putem defini în continuare constructorul său care poate fi invocat doar în constructorul subclasei sale. Constructorul subclasei poate accesa un constructor de superclasă pentru a-și inițializa variabila, care ar putea folosi în subclasă pentru cerințe suplimentare.

Exemple de clasă abstractă în Java

Human.java

package com.cont.article;
public abstract class Human
(
public abstract void whatTheylike();
public void doTheysleep()
(
System. out .println("Yes every human require sleep.");
)
)

Human1.java

package com.cont.article;
public class Human1 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have icecream.");
)
)

Human2.java

package com.cont.article;
public class Human2 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have coffee.");
)
)

TestHuman.java

package com.cont.article;
public class TestHuman
(
public static void main(String() args)
(
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
)
)

ieşire:

În exemplul de mai sus, UMANUL este o clasă abstractă care definește nevoile comune, aprecierile și nemulțumirile unui om. Există diferite tipuri de oameni cu diferite like-uri și nemulțumiri. Deci fiecare om poate oferi o implementare specifică a ceea ce le place. Acest lucru va fi specific numai pentru ei.

Principalul avantaj al clasei abstracte este că avem o implementare specifică a metodelor conform unei cerințe care duce, de asemenea, la reducerea redundanței, crește lizibilitatea codului, ascunde implementarea metodelor și, prin urmare, asigură abstractizarea parțială.

Mai putem avea un alt exemplu pentru a înțelege când ar trebui să folosim clase abstracte.

  • Ar trebui să folosim o clasă abstractă atunci când dorim să împărtășim funcționalitatea comună între diferite clase cu implementarea specifică.
  • În clasele abstracte câmpurile nu ar trebui să fie statice și finale, putem, de asemenea, să definim metode concrete ca private, publice și protejate.

Să spunem că avem o clasă de animale. Există soiuri de animale pe care le avem pe pământ și toate sunt diferite între ele într-un anumit sens sau major. Va conține toate caracteristicile comune ale tuturor.

Acum, această clasă Animal nu poate avea metode specifice fiecărui animal. Deci, prin conceptul de clasă Abstract, putem implementa această funcționalitate fără cod redundant.

Toate animalele au un tip diferit de sunet, obiceiuri, etc. De exemplu, câinele, pisica, elefantul și gustarea, toate au un sunet diferit. Deci, pentru aceasta, putem avea o metodă generică în clasa părintească prin care toate celelalte subclase sau clase de copii își pot oferi propria implementare specifică.

În clasa părinte, adică Animal, avem o metodă abstractă generică numită Sunetul lor (). Prin urmare, fiecare clasă de copii trebuie să înlocuiască această metodă și să ofere propria lor implementare specifică.

Abstract Class and Interface?

  • Clasa abstractă și interfața ambelor sunt utilizate pentru a realiza abstractizarea în java. O clasă abstractă oferă abstractizare parțială, în timp ce interfața oferă 100% sau abstractizare completă.
  • În mod implicit, variabilele dintr-o interfață sunt finale. Dar clasa abstractă conține și o variabilă non-finală. În mod similar, clasa abstractă poate avea și o variabilă statică, non-statică. Dar Interfața va conține doar o variabilă finală și statică.
  • Variabilele de membru ale unei clase abstracte pot fi ca private, publice, protejate, dar sunt implicit publice în cazul interfeței.
  • O clasă abstractă poate extinde o altă clasă Java și poate implementa mai multe interfețe, dar o interfață poate extinde o altă interfață. O clasă abstractă poate furniza o implementare a unei interfețe, dar o interfață nu poate face acest lucru.
  • Folosim aplicații și extindem cuvinte cheie pentru a implementa și extinde interfața și clasele respectiv.
  • Prin metodă, putem modifica sau accesa variabilele nestatice și non-finale ale unei clase abstracte.

Concluzie

  • Clasa abstractă folosită pentru a asigura abstractizarea parțială. O clasă abstractă nu poate fi inițiată folosind cuvântul cheie NOU.
  • O metodă abstractă nu are corp și se termină întotdeauna cu punct și virgulă (;).
  • Clasa abstractă conține metode abstracte și non-abstracte.
  • Subclasa unei superclase abstracte, trebuie să ofere o implementare a tuturor metodei abstracte, dacă nu prevede, atunci trebuie să se declare ca o clasă abstractă.
  • O subclasă poate fi abstractă chiar dacă superclasa este concretă.
  • O clasă non-abstractă nu poate conține metode abstracte. De asemenea, metoda abstractă este nestatică.
  • Prin urmare, putem spune că clasele abstracte conțin metode abstracte și concrete, astfel încât acestea nu pot oferi o abstractizare de 100%. Este un proces de ascundere a logicii complexe de către utilizatorul final și le arată numai serviciile. O subclasă poate fi abstractă chiar dacă superclasa sa este concretă și poate fi folosită și ca tip de date.
  • O clasă abstractă poate avea câmpuri statice și metode statice. Puteți utiliza acești membri statici cu o referință de clasă.

Articole recomandate

Acesta este un ghid pentru clasa abstractă în Java. Aici discutăm sintaxa și exemple de clasă abstractă în Java împreună cu clasa abstractă și interfața. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Interfață Java împotriva clasei abstracte
  2. BoxLayout în Java
  3. Ce este Java SE?
  4. Ce este moștenirea Java?
  5. Cum funcționează clasa abstractă în PHP?
  6. Clasă abstractă în C ++
  7. Ghid pentru metoda statică în PHP
  8. Prezentare completă a metodei statice JavaScript