Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

@Override

E aí, pessoal. Então, após refletir um pouco sobre o @Override, ainda sim não peguei muito a ideia dele. Ele só indica que estamos reescrevendo um método presente na classe mãe e se vc mudar o nome do método na classe mãe, tem que mudar das filhas?

2 respostas

Exatamente, o override está ali para indicar que você irá sobrescrever o método que está na classe herdada, e sim, caso você mude o nome na classe principal vai ter que mudar na classes filhas

solução!

Olá Pedro! Tudo bem?

O "@Override" é uma garantia de que estamos sobrescrevendo um método que já existe na classe mãe, então se ele for alterado na classe mãe, deve sim ser alterado na classe filha, já que ela está herdando esse método.

Poderíamos não utilizar o "@Override" na classe filha, mas então o que aconteceria? Olha esse exemplo:

Temos aqui o método "imprime" na classe mãe (Forum1)...

public class Forum1 {
    public void imprime() {
        System.out.println("imprime");
    }
}

public class Forum2 extends Forum1 {
    public void imprime() {
        System.out.println("imprime diferente");
    }
}

Se não utilizarmos, quando alguma alteração for feita no método da classe mãe, como por exemplo renomear o método, não teremos a mensagem de erro deixando claro que o método que a classe filha está tentando usar não pode ser sobrescrito pois não existe (Já que o nome do método agora é outro).

OBS: Pode ser sim que a IDE identifique isso e nos dê aquela ajudinha, mostrando que o erro está na sobrescrita do método da classe mãe, mas o ideal que não fiquemos dependendo apenas da capacidade da IDE de nos alertar sobre isso né?

public class Forum1 {
    public void imprimir() {
        System.out.println("imprimir");
    }
}

public class Forum2 extends Forum1 {
       public void imprime() {
        System.out.println("imprime diferente");
    }
}

@Override perceberá que você não está sobrescrevendo o método, pois não existe mais nenhum método imprime() na classe Forum1.

public class Forum1 {
    public void imprimir() {
        System.out.println("imprimir");
    }
}

public class Forum2 extends Forum1 {
    @Override
    public void imprime() {
        System.out.println("imprime diferente");
    }
}

É nisso que o "@Override" nos ajuda, numa situação dessas ele deixa bem claro que o método que estamos tentando sobrescrever da classe mãe possui outro nome (ou seja não existe o método que tentamos sobrescerver) e assim podemos corrigir mais facilmente.

Espero ter te ajudado :)

Conte conosco e bons estudos!