En la programación orientada a objetos, la abstracción se define como ocultar los detalles innecesarios (implementación) al usuario y centrarse en los detalles esenciales (funcionalidad). Aumenta la eficiencia y, por tanto, reduce la complejidad.
En Java, la abstracción se puede lograr usando clases abstractas y métodos. En este tutorial, aprenderemos sobre métodos abstractos y su uso en Java.
Clase abstracta
Una clase se declara abstracta usando el abstracto palabra clave. Puede tener cero o más métodos abstractos y no abstractos. Necesitamos ampliar la clase abstracta e implementar sus métodos. No se puede crear una instancia.
Sintaxis para clase abstracta:
abstract class class_name { //abstract or non-abstract methods }
Nota: Una clase abstracta puede contener o no métodos abstractos.
Método abstracto
Un método declarado utilizando el abstracto Una palabra clave dentro de una clase abstracta y no tiene una definición (implementación) se llama método abstracto.
Cuando solo necesitamos la declaración del método en una superclase, se puede lograr declarando los métodos como resúmenes.
El método abstracto también se denomina responsabilidad de subclase ya que no tiene la implementación en la superclase. Por lo tanto, una subclase debe anularlo para proporcionar la definición del método.
Sintaxis del método abstracto:
abstract return_type method_name( [ argument-list ] );
Aquí, el método abstracto no tiene cuerpo de método. Puede tener cero o más argumentos.
Puntos para recordar
Los siguientes puntos son las reglas importantes para el método abstracto en Java:
- Un método abstracto no tiene cuerpo (implementación), solo tiene una firma de método (declaración). La clase que extiende la clase abstracta implementa los métodos abstractos.
- Si una clase no abstracta (concreta) extiende una clase abstracta, entonces la clase debe implementar todos los métodos abstractos de esa clase abstracta. De lo contrario, la clase concreta también debe declararse abstracta.
- Como los métodos abstractos solo tienen la firma, es necesario que tengan un punto y coma (;) al final.
- A continuación se presentan varios combinaciones ilegales de otros modificadores para métodos con respecto a abstracto modificador:
- final
- nativo abstracto
- abstracto sincronizado
- abstracto estático
- resumen privado
- resumen estrictofp
- Si una clase contiene un método abstracto, debe ser abstracto y viceversa no es cierto.
Ejemplo de método abstracto en Java
Ejemplo 1:
En el siguiente ejemplo, aprenderemos cómo se logra la abstracción utilizando clases abstractas y métodos abstractos.
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(); } }
Producción:
Ejemplo 2:
Por defecto, todos los métodos de una interfaz son públicos y abstractos. Una interfaz no puede contener métodos concretos, es decir, métodos regulares con cuerpo.
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)); } }
Producción:
De esta forma hemos aprendido sobre el método abstracto y su implementación en Java.