logo

Abstraktni razred v Javi

Razred, ki je deklariran z abstraktno ključno besedo, je znan kot abstraktni razred v Java . Lahko ima abstraktne in neabstraktne metode (metoda s telesom).

Preden se naučimo abstraktnega razreda Jave, najprej razumemo abstrakcijo v Javi.

koda abs c

Abstrakcija v Javi

Abstrakcija je postopek skrivanja podrobnosti izvedbe in prikazovanje samo funkcionalnosti uporabniku.

Drugi način je, da uporabniku prikaže samo bistvene stvari in skrije notranje podrobnosti, na primer pošiljanje SMS-a, kjer vnesete besedilo in pošljete sporočilo. Ne poznate notranje obdelave dostave sporočila.

Abstrakcija vam omogoča, da se osredotočite na to, kar predmet namesto tega, kako to počne.

Načini za doseganje abstrakcije

Abstrakcijo v Javi lahko dosežete na dva načina

  1. Abstraktni razred (0 do 100 %)
  2. Vmesnik (100%)

Abstraktni razred v Javi

Razred, ki je deklariran kot abstrakten, je znan kot an abstraktni razred . Lahko ima abstraktne in neabstraktne metode. Treba ga je razširiti in uveljaviti njegovo metodo. Ni ga mogoče instancirati.

Točke, ki si jih je treba zapomniti

  • Abstraktni razred mora biti deklariran z abstraktno ključno besedo.
  • Lahko ima abstraktne in neabstraktne metode.
  • Ni ga mogoče instancirati.
  • Lahko ima konstruktorji in tudi statične metode.
  • Lahko ima končne metode, ki prisilijo podrazred, da ne spremeni telesa metode.
Pravila za abstraktni razred Java

Primer abstraktnega razreda

 abstract class A{} 

Abstraktna metoda v Javi

Metoda, ki je deklarirana kot abstraktna in nima izvedbe, je znana kot abstraktna metoda.

Primer abstraktne metode

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

Primer abstraktnega razreda, ki ima abstraktno metodo

V tem primeru je Bike abstrakten razred, ki vsebuje samo en zagon abstraktne metode. Njegovo izvedbo zagotavlja razred 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(); } } 
Preizkusite zdaj
 running safely 

Razumevanje resničnega scenarija abstraktnega razreda

V tem primeru je Shape abstrakten razred, njegovo izvedbo pa zagotavljata razreda Rectangle in Circle.

Večinoma ne poznamo izvedbenega razreda (ki je skrit končnemu uporabniku), objekt implementacijskega razreda pa zagotovi tovarniška metoda .

razširitvena datoteka java

A tovarniška metoda je metoda, ki vrne primerek razreda. O tovarniški metodi bomo izvedeli kasneje.

V tem primeru, če ustvarite primerek razreda Rectangle, bo priklicana metoda draw() razreda Rectangle.

Datoteka: 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(); } } 
Preizkusite zdaj
 drawing circle 

Še en primer abstraktnega razreda v Javi

Datoteka: 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()+' %'); }} 
Preizkusite zdaj
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

Abstraktni razred, ki ima konstruktor, podatkovni član in metode

Abstraktni razred ima lahko podatkovnega člana, abstraktno metodo, telo metode (neabstraktna metoda), konstruktor in celo metodo main().

Datoteka: 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(); } } 
Preizkusite zdaj
 bike is created running safely.. gear changed 

Pravilo: Če je v razredu abstraktna metoda, mora biti ta razred abstrakten.

 class Bike12{ abstract void run(); } 
Preizkusite zdaj
 compile time error 

Pravilo: Če razširjate abstraktni razred, ki ima abstraktno metodo, morate zagotoviti implementacijo metode ali ta razred narediti abstrakten.


Še en resničen scenarij abstraktnega razreda

Abstraktni razred se lahko uporablja tudi za zagotavljanje neke izvedbe vmesnik . V takem primeru končni uporabnik morda ne bo prisiljen preglasiti vseh metod vmesnika.

Opomba: Če ste začetnik v Javi, se najprej naučite vmesnika in preskočite ta primer.

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