logo

Apstraktna metoda u Javi

U objektno orijentiranom programiranju, apstrakcija se definira kao skrivanje nepotrebnih detalja (implementacija) od korisnika i fokusiranje na bitne detalje (funkcionalnost). Povećava učinkovitost i time smanjuje složenost.

U Javi se apstrakcija može postići pomoću apstraktne klase i metode. U ovom vodiču naučit ćemo o apstraktnim metodama i njihovoj upotrebi u Javi.

Apstraktni razred

Klasa se deklarira apstraktnom pomoću sažetak ključna riječ. Može imati nula ili više apstraktnih i neapstraktnih metoda. Moramo proširiti apstraktnu klasu i implementirati njezine metode. Ne može se instancirati.

Sintaksa za apstraktnu klasu:

 abstract class class_name { //abstract or non-abstract methods } 

Napomena: apstraktna klasa može ali ne mora sadržavati apstraktne metode.

Apstraktna metoda

Metoda deklarirana pomoću sažetak ključna riječ unutar apstraktne klase i nema definiciju (implementaciju) naziva se apstraktna metoda.

Kada trebamo samo deklaraciju metode u super klasi, to se može postići deklariranjem metoda kao apstrakta.

Apstraktna metoda se također naziva odgovornost potklase jer nema implementaciju u super klasi. Stoga je podklasa mora nadjačati kako bi pružila definiciju metode.

Sintaksa za apstraktnu metodu:

 abstract return_type method_name( [ argument-list ] ); 

Ovdje apstraktna metoda nema tijelo metode. Može imati nula ili više argumenata.

Bodovi za pamćenje

Sljedeće točke su važna pravila za apstraktnu metodu u Javi:

  • Apstraktne metode nemaju tijelo (implementaciju), imaju samo potpis metode (deklaraciju). Klasa koja proširuje apstraktnu klasu implementira apstraktne metode.
  • Ako neapstraktna (konkretna) klasa proširuje apstraktnu klasu, tada klasa mora implementirati sve apstraktne metode te apstraktne klase. Ako nije, konkretna klasa također mora biti deklarirana kao apstraktna.
  • Kako apstraktne metode imaju samo signaturu, ona mora imati točku i zarez (;) na kraju.
  • Slijede razne nezakonite kombinacije drugih modifikatora za metode s obzirom na sažetak modifikator:
    • konačni
    • apstraktni domaći
    • sažetak sinkroniziran
    • apstraktna statičnost
    • apstraktno privatno
    • apstraktni strictfp
  • Ako klasa sadrži apstraktnu metodu, ona mora biti apstraktna i obrnuto nije točno.

Primjer apstraktne metode u Javi

Primjer 1:

U sljedećem primjeru naučit ćemo kako se apstrakcija postiže korištenjem apstraktnih klasa i apstraktnih metoda.

AbstractMethodEx1.java

 // abstract class abstract class Multiply { // abstract methods // sub class must implement these methods public abstract int MultiplyTwo (int n1, int n2); public abstract int MultiplyThree (int n1, int n2, int n3); // regular method with body public void show() { System.out.println ('Method of abstract class Multiply'); } } // Regular class extends abstract class class AbstractMethodEx1 extends Multiply { // if the abstract methods are not implemented, compiler will give an error public int MultiplyTwo (int num1, int num2) { return num1 * num2; } public int MultiplyThree (int num1, int num2, int num3) { return num1 * num2 * num3; } // main method public static void main (String args[]) { Multiply obj = new AbstractMethodEx1(); System.out.println ('Multiplication of 2 numbers: ' + obj.MultiplyTwo (10, 50)); System.out.println ('Multiplication of 3 numbers: ' + obj.MultiplyThree (5, 8, 10)); obj.show(); } } 

Izlaz:

Apstraktna metoda u Javi

Primjer 2:

Prema zadanim postavkama, sve metode sučelja su javne i apstraktne. Sučelje ne može sadržavati konkretne metode, tj. regularne metode s tijelom.

AbstractMethodEx2.java

 // interface interface SquareCube { // abstract methods public abstract int squareNum (int n); // it not necessary to add public and abstract keywords // as the methods in interface are public abstract by default int cubeNum (int n); // regular methods are not allowed in an interface // if we uncomment this method, compiler will give an error /*public void disp() { System.out.println ('I will give error if u uncomment me'); } */ } public class AbstractMethodEx2 implements SquareCube { // defining the abstract methods of interface public int squareNum (int num) { return num * num; } public int cubeNum (int num) { return num * num * num; } // main method public static void main(String args[]){ SquareCube obj = new AbstractMethodEx2(); System.out.println('Square of number is: ' + obj.squareNum (7) ); System.out.println('Cube of number is: ' + obj.cubeNum (7)); } } 

Izlaz:

Apstraktna metoda u Javi

Na ovaj način smo naučili o apstraktnoj metodi i njenoj implementaciji u Javi.