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

Dois construtores na classe

public Conta(double saldo, int agencia, int numero, Cliente titular) {
        if(saldo >= 0
                && agencia > 0
                && numero > 0
                && titular != null) {
            this.saldo = saldo;
            this.numero = numero;
            this.agencia = agencia;
            this.titular = titular;
            System.out.println("A conta foi criada com sucesso");
            return;
        } else {
            System.out.println("Não foi possível criar a conta, verifique se as informações estão corretas.");
        }
    }

    public Conta(int agencia, int numero, Cliente titular) {
        this(1000, agencia, numero, titular);
    }

Minha duvida é no caso do segundo contrutor. Eu percebi que se eu informo os valores das variaveis que estão sendo solicitadas por ele, e se coloco, por exemplo, o valor de agencia como 0, sendo que eu no primeiro construtor solicitei no if para aceitar apenas valores maiores que zero, ele me deu o aviso que solicitei no else do primeiro construtor. Mas quando eu faço o 'System.out.println(conta);' ele mostra que a conta foi criada.

Por que acontece isso? O que fiz de errado?

4 respostas

Percebi que meu problema está no primeiro construtor, pois mesmo eu removendo o segundo construtor, e informando no primeiro que ovalor de agencia é 0, mesmo assim ele cria a conta. Pq?

solução!

Olá Andre,

Quando o construtor é acionado, o objeto Conta será criado, a não ser que ocorra uma exception. O fato de ter entrado no else NÃO significa que o objeto não tenha sido criado, ele de fato foi e seus atributos ficaram com os valores default.

Caso vc queira evitar a criação do objeto, então poderia fazer a seguinte alteração:

public Conta(double saldo, int agencia, int numero, Cliente titular) {
        if(saldo < 0
                || agencia <= 0
                || numero <= 0
                || titular == null) {
        throw new RuntimeException("Dados invalidos");
    }

    this.saldo = saldo;
    this.numero = numero;
    this.agencia = agencia;
    this.titular = titular;
    }

Att.

Fala André, beleza?

Sua dúvida foi solucionada?

Caso eu tenha mais de uma regra de negócio para um objeto (três por exemplo) significa que eu posso ter 3 métodos construtores afim de que cada um inicialize o objeto atendendo às regras em que foram implementados?