logo

Clasă abstractă în Java

O clasă care este declarată cu cuvântul cheie abstract este cunoscută ca o clasă abstractă în Java . Poate avea metode abstracte și non-abstracte (metoda cu corpul).

Înainte de a învăța clasa abstractă Java, să înțelegem mai întâi abstractizarea în Java.

hibernare dialect

Abstracția în Java

Abstracția este un proces de ascundere a detaliilor de implementare și de afișare numai a funcționalității utilizatorului.

În alt mod, îi arată utilizatorului doar lucruri esențiale și ascunde detaliile interne, de exemplu, trimiterea de SMS-uri în care tastați textul și trimiteți mesajul. Nu cunoașteți procesarea internă despre livrarea mesajului.

Abstracția vă permite să vă concentrați asupra a ceea ce obiect face în loc de cum o face.

Modalități de a realiza Abstracția

Există două moduri de a realiza abstractizarea în java

  1. Clasa abstracte (de la 0 la 100%)
  2. Interfață (100%)

Clasă abstractă în Java

O clasă care este declarată abstractă este cunoscută ca an clasa abstractă . Poate avea metode abstracte și non-abstracte. Trebuie extins și metoda sa implementată. Nu poate fi instanțiată.

Puncte de reținut

  • O clasă abstractă trebuie declarată cu un cuvânt cheie abstract.
  • Poate avea metode abstracte și non-abstracte.
  • Nu poate fi instanțiată.
  • Poate avea constructorii și metode statice, de asemenea.
  • Poate avea metode finale care vor forța subclasa să nu schimbe corpul metodei.
Reguli pentru clasa Java Abstract

Exemplu de clasă abstractă

 abstract class A{} 

Metoda abstractă în Java

O metodă care este declarată abstractă și nu are implementare este cunoscută ca metodă abstractă.

Exemplu de metodă abstractă

 abstract void printStatus();//no method body and abstract 

Exemplu de clasă Abstract care are o metodă abstractă

În acest exemplu, Bike este o clasă abstractă care conține doar o singură metodă abstractă. Implementarea sa este asigurată de clasa Honda.

 abstract class Bike{ abstract void run(); } class Honda4 extends Bike{ void run(){System.out.println('running safely');} public static void main(String args[]){ Bike obj = new Honda4(); obj.run(); } } 
Testează-l acum
 running safely 

Înțelegerea scenariului real al clasei Abstract

În acest exemplu, Shape este clasa abstractă, iar implementarea sa este furnizată de clasele Rectangle și Circle.

În mare parte, nu știm despre clasa de implementare (care este ascunsă pentru utilizatorul final), iar un obiect al clasei de implementare este furnizat de către metoda din fabrică .

A metoda din fabrică este o metodă care returnează instanța clasei. Vom afla mai târziu despre metoda din fabrică.

În acest exemplu, dacă creați instanța clasei Rectangle, va fi invocată metoda draw() a clasei Rectangle.

Fișier: TestAbstraction1.java

obiect în programarea java
 abstract class Shape{ abstract void draw(); } //In real scenario, implementation is provided by others i.e. unknown by end user class Rectangle extends Shape{ void draw(){System.out.println('drawing rectangle');} } class Circle1 extends Shape{ void draw(){System.out.println('drawing circle');} } //In real scenario, method is called by programmer or user class TestAbstraction1{ public static void main(String args[]){ Shape s=new Circle1();//In a real scenario, object is provided through method, e.g., getShape() method s.draw(); } } 
Testează-l acum
 drawing circle 

Un alt exemplu de clasă abstractă în java

Fișier: TestBank.java

 abstract class Bank{ abstract int getRateOfInterest(); } class SBI extends Bank{ int getRateOfInterest(){return 7;} } class PNB extends Bank{ int getRateOfInterest(){return 8;} } class TestBank{ public static void main(String args[]){ Bank b; b=new SBI(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); b=new PNB(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); }} 
Testează-l acum
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

Clasă abstractă având constructor, membru de date și metode

O clasă abstractă poate avea un membru de date, o metodă abstractă, un corp de metodă (metodă non-abstractă), un constructor și chiar o metodă main().

Fișier: TestAbstraction2.java

 //Example of an abstract class that has abstract and non-abstract methods abstract class Bike{ Bike(){System.out.println('bike is created');} abstract void run(); void changeGear(){System.out.println('gear changed');} } //Creating a Child class which inherits Abstract class class Honda extends Bike{ void run(){System.out.println('running safely..');} } //Creating a Test class which calls abstract and non-abstract methods class TestAbstraction2{ public static void main(String args[]){ Bike obj = new Honda(); obj.run(); obj.changeGear(); } } 
Testează-l acum
 bike is created running safely.. gear changed 

Regula: Dacă într-o clasă există o metodă abstractă, acea clasă trebuie să fie abstractă.

 class Bike12{ abstract void run(); } 
Testează-l acum
 compile time error 

Regula: Dacă extindeți o clasă abstractă care are o metodă abstractă, trebuie fie să furnizați implementarea metodei, fie să faceți această clasă abstractă.


Un alt scenariu real de clasă abstractă

Clasa abstractă poate fi, de asemenea, utilizată pentru a oferi o anumită implementare a interfață . În acest caz, este posibil ca utilizatorul final să nu fie forțat să anuleze toate metodele interfeței.

Notă: dacă sunteți începător în java, învățați mai întâi interfața și omiteți acest exemplu.

 interface A{ void a(); void b(); void c(); void d(); } abstract class B implements A{ public void c(){System.out.println('I am c');} } class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
Testează-l acum
 Output:I am a I am b I am c I am d