Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre escalabilidade em sobreescrita

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 :)

1 resposta
solução!

Oie Samuel, tudo bem contigo?

Para resolver isso, quando você for dar o inspect, segura o ctrl e passa o mouse em cima do método que você deseja visualizar a implementação, fazendo isso vão aparecer algumas opções, se a implementação do método tiver sido reescrita é só clicar na opção "Open Implementation" e caso você queria ver a implementação feita na super classe, é só clicar na opção "Open Super Implementation".

Insira aqui a descrição dessa imagem para ajudar na acessibilidade ,

Acredito que dessa forma será melhor para você conseguir visualizar, qualquer coisa fico a disposição :)

Bons estudos!