@Override em Java

Rupam Yadav 12 outubro 2023
  1. Diferença entre substituir e sobrecarregar em Java
  2. a anotação @Override em Java
@Override em Java

Neste guia, vamos mergulhar profundamente no tópico de substituição e a anotação @override em Java. Substituir é o conceito em que uma classe filha tem o mesmo método de sua classe pai. Este conceito é um exemplo de polimorfismo de tempo de execução.

Diferença entre substituir e sobrecarregar em Java

A sobreposição é freqüentemente confundida com outro termo semelhante denominado sobrecarga. Antes de prosseguir, vamos ver as diferenças significativas entre eles na tabela a seguir.

Substituição de método Sobrecarga de método
Os métodos devem ter o mesmo nome e assinatura Os métodos devem ter o mesmo nome, mas assinaturas diferentes
É um exemplo de polimorfismo de tempo de execução É um exemplo de polimorfismo em tempo de compilação
O tipo de retorno de todos os métodos deve ser o mesmo O tipo de retorno pode ou não ser o mesmo
A substituição acontece entre duas ou mais classes A sobrecarga acontece na mesma classe
Os parâmetros devem ser os mesmos Os parâmetros devem ser diferentes

a anotação @Override em Java

A anotação @Override diz ao compilador Java que queremos sobrescrever um método da superclasse. Embora seja desnecessário usar @Override sempre que quisermos implementá-lo em um processo, recomendamos usá-lo porque podemos cometer erros ao criar os métodos. Por exemplo, podemos fornecer parâmetros diferentes na classe filha, o que a torna sobrecarregada em vez de sobrescrita.

Para superar o erro, usamos @Override acima do nome do método nas classes filhas que informa ao compilador que queremos sobrescrever o método. Se cometermos algum erro, o compilador irá gerar um erro.

No exemplo abaixo, temos quatro classes. A classe OverrideJava é onde está o método main() e onde os métodos de outras classes serão chamados usando seus objetos. Então temos três outras classes nas quais a FirstClass tem um método chamado method1() com uma mensagem de impressão dentro. Finalmente, a classe SecondClass estende a FirstClass que usa o conceito de herança. Aqui, usamos o mesmo nome de método e assinatura method1() que sua classe pai como FirstClass.

Observe que na classe SecondClass, usamos a anotação @Override. Em seguida, estendemos a SecondClass na classe ThirdClass e usamos o método method1() com a anotação. Para verificar qual método é chamado, criamos um objeto de ThirdClass, que é a classe filha, e chamamos method1(). Na saída, observamos que o método dentro de ThirdClass é chamado porque o filho alterou a implementação interna após o pai.

public class OverrideJava {
  public static void main(String[] args) {
    ThirdClass thirdClass = new ThirdClass();
    thirdClass.method1();
  }
}

class ThirdClass extends SecondClass {
  @Override
  void method1() {
    System.out.println("Overriding method1 in Third Class");
  }
}

class SecondClass extends FirstClass {
  @Override
  void method1() {
    System.out.println("Overriding method1 in Second Class");
  }
}

class FirstClass {
  void method1() {
    System.out.println("This is method1");
  }
}

Resultado:

Overriding method1 in Third Class

Se quisermos chamar method1() da classe pai em vez da classe filha, podemos usar super.method1() que chama method1() de sua superclasse. A saída mostra que dentro de ThirdClass primeiro, sua classe pai que é o método de SecondClass é chamada e, em seguida, sua própria implementação é chamada.

public class OverrideJava {
  public static void main(String[] args) {
    ThirdClass thirdClass = new ThirdClass();
    thirdClass.method1();
  }
}

class ThirdClass extends SecondClass {
  @Override
  void method1() {
    super.method1();
    System.out.println("Overriding method1 in Third Class");
  }
}

class SecondClass extends FirstClass {
  @Override
  void method1() {
    System.out.println("Overriding method1 in Second Class");
  }
}

class FirstClass {
  void method1() {
    System.out.println("This is method1");
  }
}

Resultado:

Overriding method1 in Second Class
Overriding method1 in Third Class
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn