logo

Abstraktna metoda v Javi

V objektno usmerjenem programiranju je abstrakcija opredeljena kot skrivanje nepotrebnih podrobnosti (implementacija) pred uporabnikom in osredotočanje na bistvene podrobnosti (funkcionalnost). Poveča učinkovitost in s tem zmanjša kompleksnost.

V Javi je abstrakcijo mogoče doseči z uporabo abstraktni razredi in metode. V tej vadnici bomo spoznali abstraktne metode in njihovo uporabo v Javi.

Abstraktni razred

Razred je razglašen za abstrakten z uporabo povzetek ključna beseda. Ima lahko nič ali več abstraktnih in neabstraktnih metod. Razširiti moramo abstraktni razred in implementirati njegove metode. Ni ga mogoče instancirati.

Sintaksa za abstraktni razred:

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

Opomba: abstraktni razred lahko vsebuje ali ne vsebuje abstraktnih metod.

Abstraktna metoda

Metoda, deklarirana z uporabo povzetek ključna beseda znotraj abstraktnega razreda in nima definicije (implementacije) se imenuje abstraktna metoda.

Ko potrebujemo samo deklaracijo metode v super razredu, lahko to dosežemo tako, da metode deklariramo kot abstraktne.

Abstraktna metoda se imenuje tudi odgovornost podrazreda, ker nima implementacije v nadrazredu. Zato ga mora podrazred preglasiti, da zagotovi definicijo metode.

Sintaksa za abstraktno metodo:

 abstract return_type method_name( [ argument-list ] ); 

Tukaj abstraktna metoda nima telesa metode. Lahko ima nič ali več argumentov.

Točke, ki si jih je treba zapomniti

Naslednje točke so pomembna pravila za abstraktno metodo v Javi:

  • Abstraktne metode nimajo telesa (implementacije), imajo le podpis metode (deklaracijo). Razred, ki razširja abstraktni razred, izvaja abstraktne metode.
  • Če neabstrakten (konkreten) razred razširi abstraktni razred, potem mora razred izvajati vse abstraktne metode tega abstraktnega razreda. Če ni, mora biti konkretni razred prav tako deklariran kot abstrakten.
  • Ker imajo abstraktne metode samo podpis, mora imeti na koncu podpičje (;).
  • Sledijo različne nezakonite kombinacije drugih modifikatorjev za metode glede na povzetek modifikator:
    • dokončno
    • abstraktno domače
    • povzetek sinhroniziran
    • abstraktna statika
    • abstraktno zasebno
    • abstraktni strictfp
  • Če razred vsebuje abstraktno metodo, mora biti abstrakten in obratno ni res.

Primer abstraktne metode v Javi

Primer 1:

V naslednjem primeru se bomo naučili, kako se abstrakcija doseže z uporabo abstraktnih razredov in abstraktnih metod.

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(); } } 

Izhod:

Abstraktna metoda v Javi

Primer 2:

Privzeto so vse metode vmesnika javne in abstraktne. Vmesnik ne more vsebovati konkretnih metod, tj. običajnih metod s telesom.

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)); } } 

Izhod:

Abstraktna metoda v Javi

Na ta način smo spoznali abstraktno metodo in njeno implementacijo v Javi.