logo

Abstrakt klass i Java

En klass som deklareras med det abstrakta nyckelordet är känd som en abstrakt klass i Java . Det kan ha abstrakta och icke-abstrakta metoder (metod med kroppen).

Innan vi lär oss Java abstrakt klass, låt oss först förstå abstraktionen i Java.

hur man konverterar sträng till heltal

Abstraktion i Java

Abstraktion är en process för att dölja implementeringsdetaljerna och endast visa funktionalitet för användaren.

Ett annat sätt, det visar bara väsentliga saker för användaren och döljer de interna detaljerna, till exempel att skicka SMS där du skriver texten och skickar meddelandet. Du känner inte till den interna behandlingen av meddelandeleveransen.

Abstraktion låter dig fokusera på vad objekt gör istället för hur det gör det.

Sätt att uppnå abstraktion

Det finns två sätt att uppnå abstraktion i java

  1. Abstrakt klass (0 till 100 %)
  2. Gränssnitt (100 %)

Abstrakt klass i Java

En klass som deklareras som abstrakt är känd som en abstrakt klass . Det kan ha abstrakta och icke-abstrakta metoder. Det måste utökas och dess metod implementeras. Det går inte att instansiera.

Punkter att komma ihåg

  • En abstrakt klass måste deklareras med ett abstrakt nyckelord.
  • Det kan ha abstrakta och icke-abstrakta metoder.
  • Det går inte att instansiera.
  • Det kan det ha konstruktörer och statiska metoder också.
  • Den kan ha slutliga metoder som kommer att tvinga underklassen att inte ändra metodens kropp.
Regler för Java Abstrakt klass

Exempel på abstrakt klass

 abstract class A{} 

Abstrakt metod i Java

En metod som deklareras som abstrakt och inte har implementering är känd som en abstrakt metod.

Exempel på abstrakt metod

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

Exempel på abstrakt klass som har en abstrakt metod

I det här exemplet är Bike en abstrakt klass som endast innehåller en abstrakt metodkörning. Dess genomförande tillhandahålls av Honda-klassen.

 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(); } } 
Testa det nu
 running safely 

Förstå det verkliga scenariot för abstrakt klass

I det här exemplet är Shape den abstrakta klassen, och dess implementering tillhandahålls av klasserna Rectangle och Circle.

För det mesta vet vi inte om implementeringsklassen (som är dold för slutanvändaren), och ett objekt av implementeringsklassen tillhandahålls av fabriksmetod .

A fabriksmetod är en metod som returnerar instansen av klassen. Vi kommer att lära oss om fabriksmetoden senare.

I det här exemplet, om du skapar instansen av klassen Rectangle, kommer metoden draw() för klassen Rectangle att anropas.

java exempelkod

Fil: TestAbstraction1.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(); } } 
Testa det nu
 drawing circle 

Ett annat exempel på abstrakt klass i java

Fil: 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()+' %'); }} 
Testa det nu
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

Abstrakt klass med konstruktor, datamedlem och metoder

En abstrakt klass kan ha en datamedlem, abstrakt metod, metodkropp (icke-abstrakt metod), konstruktor och till och med main() metod.

Fil: 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(); } } 
Testa det nu
 bike is created running safely.. gear changed 

Regel: Om det finns en abstrakt metod i en klass måste den klassen vara abstrakt.

 class Bike12{ abstract void run(); } 
Testa det nu
 compile time error 

Regel: Om du utökar en abstrakt klass som har en abstrakt metod måste du antingen tillhandahålla implementeringen av metoden eller göra den här klassen abstrakt.


Ett annat verkligt scenario av abstrakt klass

Den abstrakta klassen kan också användas för att tillhandahålla en viss implementering av gränssnitt . I sådana fall kan slutanvändaren inte tvingas att åsidosätta alla metoder i gränssnittet.

Obs: Om du är nybörjare med java, lär dig gränssnittet först och hoppa över det här exemplet.

 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(); }} 
Testa det nu
 Output:I am a I am b I am c I am d