logo

Metodo astratto in Java

Nella programmazione orientata agli oggetti, l'astrazione è definita come nascondere all'utente i dettagli non necessari (implementazione) e concentrarsi sui dettagli essenziali (funzionalità). Aumenta l'efficienza e quindi riduce la complessità.

In Java, l'astrazione può essere ottenuta utilizzando classi astratte e metodi. In questo tutorial impareremo i metodi astratti e il loro utilizzo in Java.

Classe astratta

Una classe viene dichiarata astratta utilizzando il metodo astratto parola chiave. Può avere zero o più metodi astratti e non astratti. Dobbiamo estendere la classe astratta e implementarne i metodi. Non è possibile istanziarlo.

Sintassi per la classe astratta:

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

Nota: una classe astratta può contenere o meno metodi astratti.

Metodo astratto

Un metodo dichiarato utilizzando il file astratto parola chiave all'interno di una classe astratta e non ha una definizione (implementazione) è chiamata metodo astratto.

Quando abbiamo bisogno solo della dichiarazione del metodo in una super classe, possiamo ottenerla dichiarando i metodi come abstract.

Il metodo astratto è anche chiamato responsabilità della sottoclasse poiché non ha l'implementazione nella superclasse. Pertanto una sottoclasse deve sovrascriverla per fornire la definizione del metodo.

selezione ordinamento java

Sintassi per il metodo astratto:

 abstract return_type method_name( [ argument-list ] ); 

Qui, il metodo astratto non ha un corpo del metodo. Potrebbe avere zero o più argomenti.

Punti da ricordare

I seguenti punti sono le regole importanti per il metodo astratto in Java:

  • Un metodo astratto non ha un corpo (implementazione), ha solo una firma del metodo (dichiarazione). La classe che estende la classe astratta implementa i metodi astratti.
  • Se una classe non astratta (concreta) estende una classe astratta, allora la classe deve implementare tutti i metodi astratti di quella classe astratta. In caso contrario, anche la classe concreta deve essere dichiarata astratta.
  • Poiché i metodi astratti hanno solo la firma, è necessario che alla fine sia presente il punto e virgola (;).
  • Di seguito sono vari combinazioni illegali di altri modificatori per i metodi rispetto a astratto modificatore:
    • finale
    • nativo astratto
    • astratto sincronizzato
    • statico astratto
    • privato astratto
    • abstract strictfp
  • Se una classe contiene un metodo astratto deve essere astratto e viceversa non è vero.

Esempio di metodo astratto in Java

Esempio 1:

Nell'esempio seguente impareremo come si ottiene l'astrazione utilizzando classi e metodi astratti.

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

Produzione:

Metodo astratto in Java

Esempio 2:

Per impostazione predefinita, tutti i metodi di un'interfaccia sono pubblici e astratti. Un'interfaccia non può contenere metodi concreti, ad esempio metodi regolari con corpo.

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

Produzione:

Metodo astratto in Java

In questo modo abbiamo imparato a conoscere il metodo astratto e la sua implementazione in Java.