logo

Apstraktna klasa u Javi

Klasa koja je deklarirana pomoću ključne riječi apstraktna poznata je kao apstraktna klasa u Java . Može imati apstraktne i neapstraktne metode (metoda s tijelom).

Prije nego što naučimo Java apstraktnu klasu, prvo shvatimo apstrakciju u Javi.

java brojač

Apstrakcija u Javi

Apstrakcija je proces skrivanja detalja implementacije i prikazivanja samo funkcionalnosti korisniku.

Drugi način, prikazuje samo bitne stvari korisniku i skriva interne detalje, na primjer, slanje SMS-a gdje upišete tekst i pošaljete poruku. Ne poznajete internu obradu o isporuci poruke.

Apstrakcija vam omogućuje da se usredotočite na ono što objekt radi umjesto kako to radi.

Načini postizanja apstrakcije

Postoje dva načina za postizanje apstrakcije u Javi

  1. Apstraktna klasa (0 do 100%)
  2. Sučelje (100%)

Apstraktna klasa u Javi

Klasa koja je deklarirana kao apstraktna poznata je kao an apstraktna klasa . Može imati apstraktne i neapstraktne metode. Treba ga proširiti i implementirati njegovu metodu. Ne može se instancirati.

Bodovi za pamćenje

  • Apstraktna klasa mora biti deklarirana sa apstraktnom ključnom riječi.
  • Može imati apstraktne i neapstraktne metode.
  • Ne može se instancirati.
  • Može imati konstruktori i statičke metode također.
  • Može imati finalne metode koje će prisiliti podklasu da ne mijenja tijelo metode.
Pravila za Java Abstract klasu

Primjer apstraktne klase

 abstract class A{} 

Apstraktna metoda u Javi

Metoda koja je deklarirana kao apstraktna i nema implementaciju poznata je kao apstraktna metoda.

Primjer apstraktne metode

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

Primjer apstraktne klase koja ima apstraktnu metodu

U ovom primjeru, Bike je apstraktna klasa koja sadrži samo jednu apstraktnu metodu. Njegovu implementaciju osigurava klasa 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(); } } 
Testirajte sada
 running safely 

Razumijevanje stvarnog scenarija apstraktne klase

U ovom primjeru, Shape je apstraktna klasa, a njezinu implementaciju pružaju klase Rectangle i Circle.

Uglavnom, ne znamo za klasu implementacije (koja je skrivena krajnjem korisniku), a objekt klase implementacije je osiguran od strane tvornička metoda .

A tvornička metoda je metoda koja vraća instancu klase. Kasnije ćemo naučiti o tvorničkoj metodi.

U ovom primjeru, ako kreirate instancu klase Rectangle, bit će pozvana metoda draw() klase 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(); } } 
Testirajte sada
 drawing circle 

Još jedan primjer apstraktne klase u 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()+' %'); }} 
Testirajte sada
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

Apstraktna klasa koja ima konstruktor, podatkovni član i metode

Apstraktna klasa može imati podatkovnog člana, apstraktnu metodu, tijelo metode (neapstraktna metoda), konstruktor, pa čak i main() metodu.

umetnite vodeni žig u word

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(); } } 
Testirajte sada
 bike is created running safely.. gear changed 

Pravilo: Ako u klasi postoji apstraktna metoda, ta klasa mora biti apstraktna.

 class Bike12{ abstract void run(); } 
Testirajte sada
 compile time error 

Pravilo: Ako proširujete apstraktnu klasu koja ima apstraktnu metodu, morate osigurati implementaciju metode ili ovu klasu učiniti apstraktnom.


Još jedan stvarni scenarij apstraktne klase

Apstraktna klasa također se može koristiti za pružanje neke implementacije sučelje . U tom slučaju, krajnji korisnik možda neće biti prisiljen nadjačati sve metode sučelja.

Napomena: Ako ste početnik u Javi, prvo naučite sučelje i preskočite ovaj primjer.

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