Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

Aula 7 - Atividade 1 - Revendo a composição

A Solução proposta foi criar a classe AutenticacaoUtil e nas classes Cliente, Administrador, Gerente autenticar da seguinte forma:

public class Cliente implements Autenticavel {

private AutenticacaoUtil autenticador;

public Cliente() { this.autenticador = new AutenticacaoUtil(); }

@Override public boolean autentica(int senha) { return this.autenticador.autentica(senha); }

@Override public void setSenha(int senha) { this.autenticador.setSenha(senha);

}

}

Quando eu fui criar do meu jeito eu implementei da forma a seguir e gostaria de entender se existe alguma diferença entre elas além da forma de escrita, pois ambos funcionam aparentemente iguais.

public class Cliente implements Autenticavel {

private AutenticacaoUtil autenticador =new AutenticacaoUtil();

public Cliente(){ this.autenticador = new AutenticacaoUtil(); }

@Override public boolean autentica(int senha) { return autenticador.autentica(senha); }

@Override public void setSenha(int senha) { autenticador.setSenha(senha);

}

}

2 respostas
solução!

Olá Rafael!

O código funciona mas fica ambíguo pois você está criando uma instancia em cima da outra.

Você pode escolher instanciar no corpo da Classe ou no Construtor (um ou outro). Por convenção costumamos escrever no construtor mesmo.

Espero que tenha ajudado!

Olá Rafael!

Estou fechando o tópico ok?

Qualquer dúvida pode nos chamar no fórum!

Abs, bons estudos!