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:
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:
In questo modo abbiamo imparato a conoscere il metodo astratto e la sua implementazione in Java.