logo

Metoda abstrakcyjna w Javie

W programowaniu obiektowym abstrakcję definiuje się jako ukrywanie przed użytkownikiem niepotrzebnych szczegółów (implementacji) i skupianie się na istotnych szczegółach (funkcjonalności). Zwiększa wydajność, a tym samym zmniejsza złożoność.

W Javie abstrakcję można osiągnąć za pomocą klasy abstrakcyjne i metody. W tym samouczku poznamy metody abstrakcyjne i ich zastosowanie w Javie.

Klasa abstrakcyjna

Klasę deklaruje się jako abstrakcyjną przy użyciu metody abstrakcyjny słowo kluczowe. Może mieć zero lub więcej metod abstrakcyjnych i nieabstrakcyjnych. Musimy rozszerzyć klasę abstrakcyjną i zaimplementować jej metody. Nie można go utworzyć.

Składnia klasy abstrakcyjnej:

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

Uwaga: Klasa abstrakcyjna może zawierać metody abstrakcyjne lub nie.

Metoda abstrakcyjna

Metoda zadeklarowana przy użyciu metody abstrakcyjny słowo kluczowe w klasie abstrakcyjnej i nie ma definicji (implementacji), nazywane jest metodą abstrakcyjną.

Kiedy potrzebujemy tylko deklaracji metody w superklasie, można to osiągnąć poprzez zadeklarowanie metod jako abstraktów.

Metoda abstrakcyjna nazywana jest także odpowiedzialnością podklasy, ponieważ nie ma implementacji w superklasie. Dlatego podklasa musi ją zastąpić, aby zapewnić definicję metody.

Składnia metody abstrakcyjnej:

 abstract return_type method_name( [ argument-list ] ); 

W tym przypadku metoda abstrakcyjna nie ma treści metody. Może mieć zero lub więcej argumentów.

Punkty do zapamiętania

Poniżej przedstawiono ważne zasady dotyczące metody abstrakcyjnej w Javie:

  • Metoda abstrakcyjna nie ma treści (implementacji), ma jedynie sygnaturę metody (deklarację). Klasa rozszerzająca klasę abstrakcyjną implementuje metody abstrakcyjne.
  • Jeśli klasa nieabstrakcyjna (konkretna) rozszerza klasę abstrakcyjną, wówczas klasa ta musi implementować wszystkie metody abstrakcyjne tej klasy abstrakcyjnej. Jeśli nie, klasa konkretna również musi zostać zadeklarowana jako abstrakcyjna.
  • Ponieważ metody abstrakcyjne mają jedynie podpis, na końcu musi znajdować się średnik (;).
  • Poniżej znajdują się różne nielegalne kombinacje innych modyfikatorów metod w odniesieniu do abstrakcyjny modyfikator:
    • finał
    • abstrakcyjny rodzimy
    • streszczenie zsynchronizowane
    • abstrakcyjna statyka
    • streszczenie prywatne
    • streszczenie ścisłefp
  • Jeśli klasa zawiera metodę abstrakcyjną, musi być abstrakcyjna i odwrotnie, nie jest to prawdą.

Przykład metody abstrakcyjnej w Javie

Przykład 1:

W poniższym przykładzie dowiemy się, jak abstrakcję osiąga się za pomocą klas abstrakcyjnych i metod abstrakcyjnych.

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

Wyjście:

Metoda abstrakcyjna w Javie

Przykład 2:

Domyślnie wszystkie metody interfejsu są publiczne i abstrakcyjne. Interfejs nie może zawierać metod konkretnych, czyli zwykłych metod z treścią.

Metoda abstrakcyjnaEx2.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)); } } 

Wyjście:

Metoda abstrakcyjna w Javie

W ten sposób poznaliśmy metodę abstrakcyjną i jej implementację w Javie.