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

Duvida: certificacao-java-metodos-encapsulamento/section/5/task/7

Bom dia galera,

entao, pra falar bem a vdd nao entendi o que exatamente aquele "new C(this)", o que exatamente esta sendo passado ali? Tentei repassar passo a passo, mas confesso que achei confuso ali, alguem consegue me ajudar?

3 respostas

Oi Jose, os exemplos no curso de certificação precisam ser mais azedos para já te deixar mais preparado :). Vamos lá. A classe C tem um construtor que aceita receber B como argumento.

class C { C(B b) {new B(new A());} C() {new B();} }

Agora vou dar um zoom na classe B.

class B { ... B() { new C(this);} }

No construtor sem argumentos de B, ele já instancia um objeto do tipo C passando como argumento um objeto do tipo B. Como você está dentro da classe B e precisa de uma referência para o próprio objeto, é usado o this.

Alberto, obrigado pelo resposta. Deixa só eu confirmar pra ver se entendi. Entao nesse casso ali no new C(this) ele estaria recebendo o objeto atual que seria do tipo B? e entraria numa especie de looping? vlw

solução!

Oi José, ainda não, mas já chegamos lá. Se ele estivesse fazendo new B(), aí vc estaria entrando em chamada infinita. Perceba que vc está instanciando um objeto do tipo C e, por conta disso, vc não está entrando em um loop infinito :).