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

Verificações do Compilador (Exercícios 3 e 4)

Olá, tudo bom?

Tento me forçar a pensar sempre no "caminho" que o compilador percorre para me apresentar um resultado. Aprendi com os vídeos que o uso de desenhos pode me ajudar com essa dinâmica, por isso fiz um tentando entender os conceitos dos exercícios 3 e 4.

Queria saber se entendi corretamente, por favor.

Imagem  apresenta um flowchart onde eu divido os conceitos dos exercícios 3 e 4 em três etapas de verificações

2 respostas
solução!

Olá Vitor,

Você entendeu muito bem e fez um desenho bem massa.

Eu só faria uma ressalva pra análise da verificação Nº3. Eu acho que vc entendeu certo, mas a forma de se expressar poderia melhorar.

Quando você atribui um valor a uma referência, se o compilador permitiu essa ação, quer dizer que já foi feita a verificação de compatibilidade de tipos. Ou seja, a referência pode apontar pra null ou pra uma instância concreta de um objeto de tipo compatível. Então a implementação do método sempre vai existir, não importa em qual nível da cadeia de herança que a implementação esteja. Considerando isso, não vai ter o cenário onde não existe o método no objeto.

Sobre o "Se não: usar o método da referência". Essa afirmação não pode ser verdadeira, pois a execução do método fica a cargo do objeto. A referência por si só não "tem" a implementação do método. Ela nos garante que vai apontar pra um objeto que tenha a tal imaplementação. Assim, quando chamamos um método a partir dela, ela chega no objeto e fala: "Oh objeto que eu to apontando, execute método X pra mim, por favor" e a instância que vai fazer o serviço.

Há que se considerar também, que em muitos casos a referência será de uma interface ou de classe abstrata qualquer, que não terá a implementação de todos os métodos.

Bom, é isso, se ficou alguma dúvida ou ponto pra debater sobre minha argumentação, pode ficar a vontade pra colocar aqui, beleza?

Abs

Muito obrigado, Eric.

Ficou bem mais claro pensar que essas "verificações" acontecem no momento da atribuição. Realmente foi errado pensar uma situação aonde o método não existiria no objeto criado. Me atrapalhei esquecendo inclusive os conceitos de sobrescrita apresentados algumas aulas antes.

Enfim, fazer os desenhos e tentar imaginar esses caminhos que o compilador faz ao funcionar tem me ajudado a entender um pouco mais o curso. Tenho medo de entrar num modo automático de "tal código vai aqui, me entrega isso, mas não sei o que ele tá fazendo de verdade. Próximo vídeo!" kkkkkkkk