logo

Abstraktná metóda v Jave

V objektovo orientovanom programovaní je abstrakcia definovaná ako skrytie nepotrebných detailov (implementácia) pred používateľom a zameranie sa na podstatné detaily (funkčnosť). Zvyšuje účinnosť a tým znižuje zložitosť.

V Jave možno abstrakciu dosiahnuť pomocou abstraktné triedy a metódy. V tomto návode sa dozvieme o abstraktných metódach a ich použití v Jave.

Abstraktná trieda

Trieda je deklarovaná ako abstraktná pomocou abstraktné kľúčové slovo. Môže mať nula alebo viac abstraktných a neabstraktných metód. Potrebujeme rozšíriť abstraktnú triedu a implementovať jej metódy. Nedá sa vytvoriť inštancia.

Syntax pre abstraktnú triedu:

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

Poznámka: Abstraktná trieda môže alebo nemusí obsahovať abstraktné metódy.

Abstraktná metóda

Metóda deklarovaná pomocou abstraktné kľúčové slovo v rámci abstraktnej triedy a nemá definíciu (implementáciu) sa nazýva abstraktná metóda.

Keď potrebujeme len deklaráciu metódy v supertriede, dá sa to dosiahnuť deklarovaním metód ako abstraktov.

Abstraktná metóda sa tiež nazýva zodpovednosť podtriedy, pretože nemá implementáciu v supertriede. Preto ju musí podtrieda prepísať, aby poskytla definíciu metódy.

Syntax pre abstraktnú metódu:

 abstract return_type method_name( [ argument-list ] ); 

Abstraktná metóda tu nemá telo metódy. Môže mať nula alebo viac argumentov.

Body na zapamätanie

Nasledujúce body sú dôležité pravidlá pre abstraktnú metódu v Jave:

  • Abstraktná metóda nemá telo (implementáciu), má len podpis metódy (deklaráciu). Trieda, ktorá rozširuje abstraktnú triedu, implementuje abstraktné metódy.
  • Ak neabstraktná (konkrétna) trieda rozširuje abstraktnú triedu, potom trieda musí implementovať všetky abstraktné metódy tejto abstraktnej triedy. Ak nie, konkrétna trieda musí byť tiež deklarovaná ako abstraktná.
  • Keďže abstraktné metódy majú iba podpis, musí mať na konci bodkočiarku (;).
  • Nasledujúce sú rôzne nedovolené kombinácie iných modifikátorov pre metódy s ohľadom na abstraktné modifikátor:
    • Konečný
    • abstraktný rodák
    • abstraktné synchronizované
    • abstraktné statické
    • abstraktné súkromné
    • abstraktné strictfp
  • Ak trieda obsahuje abstraktnú metódu, musí byť abstraktná a naopak to neplatí.

Príklad abstraktnej metódy v Jave

Príklad 1:

V nasledujúcom príklade sa dozvieme, ako sa abstrakcia dosahuje pomocou abstraktných tried a abstraktných metód.

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

Výkon:

Abstraktná metóda v Jave

Príklad 2:

Štandardne sú všetky metódy rozhrania verejné a abstraktné. Rozhranie nemôže obsahovať konkrétne metódy, t. j. bežné metódy s telom.

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

Výkon:

Abstraktná metóda v Jave

Týmto spôsobom sme sa dozvedeli o abstraktnej metóde a jej implementácii v Jave.