Olá. Acabou surgindo uma dúvida quanto ao uso do @Override. Eu entendi perfeitamente o conceito da sobreescrita, mas me pergunto se isso não pode vir a se tornar problemático num cenário mais complexo. Vou usar como exemplo o método "transfere" (que na aula em questão está sendo invocado dentro do main): se eu usar o inspect do Eclipse com CTRL e clicar em cima, eu sou levado diretamente para a implementação na Superclasse. Supondo que não tenha sido quem desenvolveu o código, como eu faria para saber que esse método está sendo reescrito dentro de uma Subclasse? Também supondo que podem haver um zilhão de outros métodos implementados nela? Acrescentado o fato de que isso dificulta um pouco a leitura, porque devido à recursividade do do "saca" (reescrito na classe filha), eu preciso imaginar como ele se comporta na classe-filha, enquanto estou fazendo a leitura sua implementação genérica na classe-mãe.
Por exemplo, enquanto eu estou tentando entender isso...
public class Conta {
// método saca omitido
public boolean transfere(double valor, Conta destino) {
if (this.saca(valor)) {
destino.deposita(valor);
return true;
} else {
return false;
}
}
...eu preciso ter em mente que na verdade é isso que está sendo chamado!
public class ContaCorrente extends Conta {
@Override
public boolean saca(double valor) {
return super.saca(valor + 0.20);
}
}
Ao menos para mim, fica um pouco confuso. Realmente espero que exista um jeito melhor de fazer a leitura. Espero que tenha conseguido expressar com clareza. Em todo caso, obrigado pela ajuda :)