logo

Método abstrato em Java

Na programação orientada a objetos, abstração é definida como ocultar do usuário detalhes desnecessários (implementação) e focar em detalhes essenciais (funcionalidade). Aumenta a eficiência e, portanto, reduz a complexidade.

Em Java, a abstração pode ser alcançada usando classes abstratas e métodos. Neste tutorial, aprenderemos sobre métodos abstratos e seu uso em Java.

Classe abstrata

Uma classe é declarada abstrata usando o abstrato palavra-chave. Pode ter zero ou mais métodos abstratos e não abstratos. Precisamos estender a classe abstrata e implementar seus métodos. Não pode ser instanciado.

Sintaxe para classe abstrata:

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

Nota: Uma classe abstrata pode ou não conter métodos abstratos.

Método Abstrato

Um método declarado usando o abstrato palavra-chave dentro de uma classe abstrata e não possui uma definição (implementação) é chamada de método abstrato.

Quando precisamos apenas da declaração do método em uma superclasse, isso pode ser conseguido declarando os métodos como abstratos.

O método abstrato também é chamado de responsabilidade de subclasse, pois não possui implementação na superclasse. Portanto, uma subclasse deve substituí-la para fornecer a definição do método.

Sintaxe para método abstrato:

 abstract return_type method_name( [ argument-list ] ); 

Aqui, o método abstrato não possui um corpo de método. Pode ter zero ou mais argumentos.

Pontos para lembrar

Os pontos a seguir são as regras importantes para métodos abstratos em Java:

  • Um método abstrato não possui corpo (implementação), apenas possui uma assinatura de método (declaração). A classe que estende a classe abstrata implementa os métodos abstratos.
  • Se uma classe não abstrata (concreta) estende uma classe abstrata, então a classe deve implementar todos os métodos abstratos dessa classe abstrata. Caso contrário, a classe concreta também deverá ser declarada como abstrata.
  • Como os métodos abstratos possuem apenas a assinatura, ela precisa ter ponto e vírgula (;) no final.
  • A seguir estão vários combinações ilegais de outros modificadores para métodos em relação a abstrato modificador:
    • final
    • nativo abstrato
    • abstrato sincronizado
    • abstrato estático
    • abstrato privado
    • abstrato strictfp
  • Se uma classe contém um método abstrato, ela precisa ser abstrata e vice-versa não é verdade.

Exemplo de método abstrato em Java

Exemplo 1:

No exemplo a seguir, aprenderemos como a abstração é alcançada usando classes abstratas e métodos abstratos.

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

Saída:

Método abstrato em Java

Exemplo 2:

Por padrão, todos os métodos de uma interface são públicos e abstratos. Uma interface não pode conter métodos concretos, ou seja, métodos regulares com 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)); } } 

Saída:

Método abstrato em Java

Desta forma, aprendemos sobre o método abstrato e sua implementação em Java.