logo

Abstrakti klasė Java

Klasė, kuri deklaruojama abstrakčiuoju raktiniu žodžiu, yra žinoma kaip abstrakčioji klasė Java . Jis gali turėti abstrakčių ir neabstrakčių metodų (metodas su kūnu).

Prieš mokydamiesi Java abstrakčiosios klasės, pirmiausia supraskime abstrakciją Java.

strep c

Abstrakcija Java

Abstrakcija yra diegimo detalių slėpimo ir vartotojui tik funkcijų rodymo procesas.

Kitas būdas – vartotojui parodo tik esminius dalykus ir paslepia vidines detales, pavyzdžiui, siunčia SMS, kur įvedate tekstą ir išsiunčiate žinutę. Jūs nežinote vidinio pranešimo pristatymo apdorojimo.

Abstrakcija leidžia sutelkti dėmesį į tai, kas objektas daro, o ne kaip tai daro.

Abstrakcijos pasiekimo būdai

Java abstrakciją galima pasiekti dviem būdais

  1. Abstraktų klasė (nuo 0 iki 100 %)
  2. Sąsaja (100 %)

Abstrakti klasė Java

Klasė, kuri paskelbta abstrakčia, yra žinoma kaip an abstrakti klasė . Jis gali turėti abstrakčių ir neabstrakčių metodų. Jį reikia išplėsti ir įgyvendinti jo metodą. Jo negalima kartoti.

Taškai, kuriuos reikia prisiminti

  • Abstrakčioji klasė turi būti deklaruojama naudojant abstraktų raktinį žodį.
  • Jis gali turėti abstrakčių ir neabstrakčių metodų.
  • Jo negalima kartoti.
  • Gali turėti konstruktoriai ir statiniai metodai.
  • Jis gali turėti galutinius metodus, kurie privers poklasį nekeisti metodo turinio.
Java Abstract klasės taisyklės

Abstrakčios klasės pavyzdys

 abstract class A{} 

Abstraktus metodas Java

Metodas, kuris deklaruojamas kaip abstraktus ir neturi įgyvendinimo, yra žinomas kaip abstraktus metodas.

Abstraktaus metodo pavyzdys

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

Abstract klasės, kuri turi abstrakčiąjį metodą, pavyzdys

Šiame pavyzdyje Bike yra abstrakti klasė, kurioje yra tik vienas abstraktus metodas. Jo įgyvendinimą užtikrina „Honda“ klasė.

 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(); } } 
Išbandykite dabar
 running safely 

Suprasti tikrąjį abstrakčios klasės scenarijų

Šiame pavyzdyje Shape yra abstrakčioji klasė, o jos įgyvendinimą užtikrina Stačiakampio ir Apskritimo klasės.

Dažniausiai mes nežinome apie diegimo klasę (kuri yra paslėpta galutiniam vartotojui), o diegimo klasės objektą pateikia gamyklinis metodas .

A gamyklinis metodas yra metodas, kuris grąžina klasės egzempliorių. Apie gamyklinį metodą sužinosime vėliau.

Šiame pavyzdyje, jei kuriate stačiakampio klasės egzempliorių, bus iškviestas stačiakampio klasės metodas draw().

kaip išjungti kūrėjo režimą „Android“.

Failas: 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(); } } 
Išbandykite dabar
 drawing circle 

Kitas „Java“ abstrakčios klasės pavyzdys

Failas: 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()+' %'); }} 
Išbandykite dabar
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

Abstrakti klasė, turinti konstruktorių, duomenų narį ir metodus

Abstrakčioji klasė gali turėti duomenų narį, abstrakčiąjį metodą, metodo korpusą (neabstraktųjį metodą), konstruktorių ir net pagrindinį() metodą.

Failas: 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(); } } 
Išbandykite dabar
 bike is created running safely.. gear changed 

Taisyklė: jei klasėje yra abstraktus metodas, ta klasė turi būti abstrakti.

 class Bike12{ abstract void run(); } 
Išbandykite dabar
 compile time error 

Taisyklė: Jei išplečiate abstrakčią klasę, kuri turi abstraktų metodą, turite pateikti metodo įgyvendinimą arba padaryti šią klasę abstrakčią.


Kitas tikras abstrakčios klasės scenarijus

Abstrakčioji klasė taip pat gali būti naudojama tam tikram įgyvendinimui sąsaja . Tokiu atveju galutinis vartotojas negali būti verčiamas nepaisyti visų sąsajos metodų.

Pastaba: jei esate pradedantysis naudoti Java, pirmiausia išmokite sąsają ir praleiskite šį pavyzdį.

 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(); }} 
Išbandykite dabar
 Output:I am a I am b I am c I am d