logo

Metoda abstractă în Java

În programarea orientată pe obiecte, abstractizarea este definită ca ascunderea detaliilor inutile (implementare) de la utilizator și concentrarea asupra detaliilor esențiale (funcționalitate). Mărește eficiența și astfel reduce complexitatea.

În Java, abstracția poate fi realizată folosind clase abstracte si metode. În acest tutorial, vom afla despre metodele abstracte și despre utilizarea lor în Java.

Clasa abstracte

O clasă este declarată abstractă folosind abstract cuvânt cheie. Poate avea zero sau mai multe metode abstracte și non-abstracte. Trebuie să extindem clasa abstractă și să implementăm metodele acesteia. Nu poate fi instanțiată.

Sintaxă pentru clasa abstractă:

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

Notă: O clasă abstractă poate sau nu conține metode abstracte.

Metoda abstractă

O metodă declarată folosind abstract cuvântul cheie dintr-o clasă abstractă și nu are o definiție (implementare) se numește metodă abstractă.

Când avem nevoie doar de declararea metodei într-o super clasă, aceasta poate fi realizată prin declararea metodelor ca abstracte.

Metoda abstractă se mai numește și responsabilitatea subclaselor deoarece nu are implementarea în super clasă. Prin urmare, o subclasă trebuie să o înlocuiască pentru a furniza definiția metodei.

Sintaxă pentru metoda abstractă:

 abstract return_type method_name( [ argument-list ] ); 

Aici, metoda abstractă nu are un corp de metodă. Poate avea zero sau mai multe argumente.

Puncte de reținut

Următoarele puncte sunt regulile importante pentru metoda abstractă în Java:

  • O metodă abstractă nu are un corp (implementare), au doar o semnătură de metodă (declarație). Clasa care extinde clasa abstractă implementează metodele abstracte.
  • Dacă o clasă non-abstractă (concretă) extinde o clasă abstractă, atunci clasa trebuie să implementeze toate metodele abstracte ale acelei clase abstracte. Dacă nu, clasa concretă trebuie declarată și ea abstractă.
  • Deoarece metodele abstracte au doar semnătura, trebuie să aibă punct și virgulă (;) la sfârșit.
  • Următoarele sunt diverse combinatii ilegale a altor modificatori pentru metode cu privire la abstract modificator:
    • final
    • nativ abstract
    • abstract sincronizat
    • static abstract
    • abstract privat
    • strictfp abstract
  • Dacă o clasă conține o metodă abstractă, trebuie să fie abstractă și invers nu este adevărată.

Exemplu de metodă abstractă în Java

Exemplul 1:

În exemplul următor, vom afla cum se realizează abstracția folosind clase abstracte și metode abstracte.

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

Ieșire:

Metoda abstractă în Java

Exemplul 2:

În mod implicit, toate metodele unei interfețe sunt publice și abstracte. O interfață nu poate conține metode concrete, adică metode obișnuite cu body.

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

Ieșire:

Metoda abstractă în Java

În acest fel, am învățat despre metoda abstractă și implementarea acesteia în Java.