logo

Mètode abstracte en Java

En la programació orientada a objectes, l'abstracció es defineix com ocultar els detalls innecessaris (implementació) de l'usuari i centrar-se en detalls essencials (funcionalitat). Augmenta l'eficiència i, per tant, redueix la complexitat.

A Java, l'abstracció es pot aconseguir mitjançant classes abstractes i mètodes. En aquest tutorial, coneixerem els mètodes abstractes i el seu ús a Java.

Classe abstracta

Una classe es declara abstracta utilitzant el abstracte paraula clau. Pot tenir zero o més mètodes abstractes i no abstractes. Hem d'ampliar la classe abstracta i implementar els seus mètodes. No es pot instanciar.

Sintaxi per a la classe abstracta:

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

Nota: una classe abstracta pot contenir o no mètodes abstractes.

Mètode abstracte

Un mètode declarat mitjançant el abstracte La paraula clau dins d'una classe abstracta i no té una definició (implementació) s'anomena mètode abstracte.

Quan només necessitem la declaració del mètode en una superclasse, es pot aconseguir declarant els mètodes com a resums.

El mètode abstracte també s'anomena responsabilitat de subclasse ja que no té la implementació a la superclasse. Per tant, una subclasse l'ha de substituir per proporcionar la definició del mètode.

Sintaxi del mètode abstracte:

 abstract return_type method_name( [ argument-list ] ); 

Aquí, el mètode abstracte no té un cos de mètode. Pot tenir zero o més arguments.

Punts a recordar

Els punts següents són les regles importants per al mètode abstracte a Java:

  • Un mètode abstracte no té un cos (implementació), només tenen una signatura de mètode (declaració). La classe que amplia la classe abstracta implementa els mètodes abstractes.
  • Si una classe no abstracta (concreta) amplia una classe abstracta, aleshores la classe ha d'implementar tots els mètodes abstractes d'aquesta classe abstracta. Si no, la classe concreta també s'ha de declarar com a abstracta.
  • Com que els mètodes abstractes només tenen la signatura, ha de tenir punt i coma (;) al final.
  • A continuació hi ha diversos combinacions il·legals d'altres modificadors de mètodes pel que fa a abstracte modificador:
    • final
    • nadiu abstracte
    • abstracte sincronitzat
    • estàtic abstracte
    • abstracte privat
    • strictfp abstracte
  • Si una classe conté un mètode abstracte ha de ser abstracte i viceversa no és cert.

Exemple de mètode abstracte en Java

Exemple 1:

En l'exemple següent, aprendrem com s'aconsegueix l'abstracció mitjançant classes abstractes i mètodes abstractes.

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

Sortida:

Mètode abstracte en Java

Exemple 2:

Per defecte, tots els mètodes d'una interfície són públics i abstractes. Una interfície no pot contenir mètodes concrets, és a dir, mètodes normals amb 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)); } } 

Sortida:

Mètode abstracte en Java

D'aquesta manera, hem après el mètode abstracte i la seva implementació en Java.