Oi, Alexandre. Tudo bem?
Bem observado, só a anotação @Override sozinha não é capaz de fazer alterações no código. Então vamos lá, afinal de contas, para que serve a anotação?
Vamos dar uma olhada nesses dois métodos, sem o @Override:
public class SuperClasse {
public void hello() {
System.out.println("hello world");
}
}
public class Classe extends SuperClasse {
public void hello() {
System.out.println("hello brazil");
}
}
Perceba que tudo está indo bem até aqui, o método hello() da Classe sobrescreve o método de mesmo nome da SuperClasse mesmo sem a anotação. Mas agora tente mudar o nome do método hello() da SuperClasse para helloWorld(). O código compila, mas não há mais sobrescrita, hello() e helloWorld() se tornaram métodos completamente diferentes e sem nenhuma ligação.
Veja agora com a anotação @Override:
public class SuperClasse {
public void helloWorld() {
System.out.println("hello world");
}
}
public class Classe extends SuperClasse {
@Override
public void hello() {
System.out.println("hello brazil");
}
}
Perceba que a partir de agora o seu código não compila mais, pois o compilador percebeu que embora você tenha declarado que vai sobrescrever algum método com @Override, método nenhum está sendo sobrescrito, já que não existe nenhum método com o nome hello() na SuperClasse para ser sobrescrito.
Se ficou qualquer dúvida, é só avisar. Bons estudos!