logo

Absztrakt osztály Java nyelven

Az absztrakt kulcsszóval deklarált osztályt absztrakt osztálynak nevezzük Jáva . Lehetnek elvont és nem absztrakt módszerei (módszer a testtel).

Mielőtt megtanulnánk a Java absztrakt osztályát, először értsük meg a Java absztrakcióját.

hogyan lehet a húrt intté alakítani

Absztrakció Java nyelven

Absztrakció egy olyan folyamat, amely elrejti a megvalósítás részleteit, és csak a funkciókat mutatja meg a felhasználónak.

Egy másik módszer, hogy csak a lényeges dolgokat mutatja meg a felhasználónak, és elrejti a belső részleteket, például SMS-t küld, ahol beírja a szöveget és elküldi az üzenetet. Nem ismeri az üzenetkézbesítés belső feldolgozását.

Az absztrakció lehetővé teszi, hogy arra összpontosítson, ami a tárgy teszi ahelyett, hogy hogyan csinálja.

Az absztrakció elérésének módjai

Javaban kétféleképpen lehet absztrakciót elérni

  1. Absztrakt osztály (0-100%)
  2. Interfész (100%)

Absztrakt osztály Java nyelven

Az absztraktnak nyilvánított osztályt an absztrakt osztály . Lehetnek elvont és nem absztrakt módszerei. Bővíteni kell, és a módszerét alkalmazni kell. Nem lehet példányosítani.

Emlékeztető pontok

  • Egy absztrakt osztályt egy absztrakt kulcsszóval kell deklarálni.
  • Lehetnek elvont és nem absztrakt módszerei.
  • Nem lehet példányosítani.
  • Lehet kivitelezők és statikus módszerek is.
  • Lehetnek végső metódusai, amelyek arra kényszerítik az alosztályt, hogy ne változtassa meg a metódus törzsét.
A Java Abstract osztály szabályai

Példa az absztrakt osztályra

 abstract class A{} 

Absztrakt módszer Java nyelven

Az absztraktnak nyilvánított és megvalósítással nem rendelkező metódust absztrakt módszernek nevezzük.

Példa absztrakt módszerre

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

Példa absztrakt osztályra, amelynek van absztrakt metódusa

Ebben a példában a Bike egy absztrakt osztály, amely csak egy absztrakt metódusfuttatást tartalmaz. Megvalósítását a Honda osztály biztosítja.

 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(); } } 
Tesztelje most
 running safely 

Az absztrakt osztály valós forgatókönyvének megértése

Ebben a példában a Shape az absztrakt osztály, megvalósítását pedig a Rectangle és Circle osztályok biztosítják.

Többnyire nem tudunk a megvalósítási osztályról (ami rejtve van a végfelhasználó előtt), és a megvalósítási osztály egy objektumát a gyári módszer .

A gyári módszer egy olyan metódus, amely visszaadja az osztály példányát. A gyári módszerről később tanulunk.

Ebben a példában, ha létrehozza a Rectangle osztály példányát, a rendszer meghívja a Rectangle osztály draw() metódusát.

Fájl: 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(); } } 
Tesztelje most
 drawing circle 

Egy másik példa a java Abstract osztályára

Fájl: TestBank.java

"kruskal algoritmusa"
 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()+' %'); }} 
Tesztelje most
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

Absztrakt osztály konstruktorral, adattaggal és metódusokkal

Egy absztrakt osztálynak lehet adattagja, absztrakt metódusa, metódustörzse (nem absztrakt metódus), konstruktora és akár main() metódusa is.

Fájl: 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(); } } 
Tesztelje most
 bike is created running safely.. gear changed 

Szabály: Ha van egy absztrakt metódus egy osztályban, akkor annak absztraktnak kell lennie.

 class Bike12{ abstract void run(); } 
Tesztelje most
 compile time error 

Szabály: Ha olyan absztrakt osztályt bővít ki, amely absztrakt metódussal rendelkezik, akkor meg kell adnia a metódus megvalósítását, vagy absztraktnak kell lennie.


Az absztrakt osztály másik valódi forgatókönyve

Az absztrakt osztályt arra is használhatjuk, hogy a felület . Ebben az esetben a végfelhasználó nem kényszeríthető az interfész összes metódusának felülírására.

Megjegyzés: Ha kezdő java, először tanulja meg a felületet, és hagyja ki ezt a példát.

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