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

Instanciar objeto como atributo x construtor

Oi pessoal, assistindo à aula sobre objetos compostos o Paulo disse que era possível criar um cliente ao criar uma conta colocando o Cliente cliente = new Cliente() como um atributo de Conta. Qual a diferença entre isso para colocar essa instanciação dentro do método construtor de conta? É a mesma coisa ou tanto faz? Hoje mesmo fiz uma aplicação e coloquei uma instanciação como esta dentro do método construtor, por isso queria saber se é não recomendável fazer isso. Obrigada!

3 respostas
solução!

Oie Valquíria, tudo bem?

Ambas as formas funcionam de maneira igual e em situações normais tanto faz qual o jeito que você vai usar, entretanto existem diferenças e vou explicar melhor abaixo:

Instanciar o objeto fora do construtor:

Nessa situação sempre que essa classe for instanciada, esse objeto incluido como atributo também será instanciado não importando se ele é necessário ou não.

Instaciar dentro do construtor:

Nessa situação você ganha maior liberdade de "customização", ou seja, as vezes esse objeto não vai precisar se instanciado e ele estando dentro de um construtor, seria só você chamar outro construtor onde esse objeto não é instanciado já que é possível uma classe ter mais de um construtor. Você também ganha liberdade para decidir como esse objeto será instanciado, podendo ele ser instanciado de maneira direta dentro da classe ou dele receber o valor através dos parâmetros do construtor. Por exemplo:

1º Caso:

public class Pessoa {
    Familia famiia;
    public Pessoa() {
       this.familia = new Familia();
  }

}

2 º Caso:

public class Pessoa {
    Famiia familia;
    public Pessoa(Familia familia) {
       this.familia = familia;
  }

}

Além disso tudo, podem haver outras situações onde é preferivel instanciar o objeto dentro do construtor, mas isso irá depender do que você quer alcançar com seu código.

Espero ter conseguido ajudar, se houver qualquer outra dúvida é só mandar por aqui :)

Bons estudos!

Muito obrigada, Igor! Ajudou sim, então quando colocamos apenas os atributos e criamos o objeto eles são criados nos valores padrão, certo?

Oie Valquíria!

Isso mesmo! Se a instância for feita dentro da classe, o objeto será criado normalmente e obrigatoriamente, impossibilitando ser feito qualquer tipo de validação.

Continue assim e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software