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

Dúvida no Ex. 1 da Aula 6 - Diferença entre instancia objeto e Construtores

Boa noite, Estou fazendo confusão com o construtor... Alguém pode me mostrar a diferença. Antes de entrar em construtor, eu estava identificando como instancia de um objeto quando aparecia a palavra new. Dúvida: Como diferencia uma instancia de um objeto de um construtor.

1) Um objeto é uma instancia de uma classe Ex. Conta minhaConta = new Conta();

2) os Construtores são métodos invocados na hora que é chamado um novo método (new).

Ex. Conta joao = new Conta(123, 100.0);

4 respostas

Bom dia! O construtor com parâmetro é simplesmente um meio no qual você pode instanciar um objeto já passando valores que preencherão seus atributos. Assim você terá um objeto instanciado diferente de null e não será necessário setar seus valores posteriormente (setX()).

Abraços!

Como posso diferenciar em um programa: O que é instanciar de objeto de um construtor. Vc pode me dar um exemplo.

solução!

Boa noite, Iacy! Tudo bem? =)

O construtor é um "método especial" que contém o mesmo nome da classe, mas não possui retorno, enquanto que uma instancia de uma classe, é um objeto que foi definido pela classe...

Vou usar como exemplo a classe Conta que você mesmo mencionou, ok? =)

Vamos supor que uma conta possua um int representando o número dela, uma String representando a agência e um double para o saldo...

public class Conta {
    private int numero;
    private String conta;
    private double saldo;

    // Getters e Setters...
}

E agora vamos criar uma conta:

public class TestaConta {
    public static void main(String[] args) {
        Conta minhaConta = new Conta();
    }
}

O que fizemos aqui? Bom, criamos uma conta... Mas como? Instanciamos uma conta, chamada minhaConta, usando o new em seu construtor...

Veja bem, minhaConta é o objeto, a instancia da classe Conta. O construtor é public Conta().

Lembra que eu disse que o construtor nada mais é do que um "método especial" que tem o mesmo nome da classe, mas não tem retorno? Aí pode você estar se perguntando onde raios definimos esse construtor, né? Por padrão, se não escrevemos nada, existe um construtor padrão, vazio sem argumentos... Falei muita coisa, vou lhe mostrar. Escrever a classe conta da forma que fizemos é exatamente a mesma coisa do que escrever isso:

public class Conta {
    private int numero;
    private String agencia;
    private double saldo;

    public Conta() {
    }

    // Getters e Setters...
}

Olha aí o tal do construtor!

Mas, por que existe o construtor? Vamos voltar para nossa TestaConta e imprimir o saldo:

public class TestaConta {
    public static void main(String[] args) {
        Conta minhaConta = new Conta();
        System.out.println(minhaConta.getSaldo());
    }
}

O que será impresso? Bom, R$0.00... No final do ano passado eu fui abrir uma conta em um banco e, se não me engano, eles pedem que a conta seja aberta com um depósito de R$50.00, no mínimo.

Vamos trazer essa regra para nosso sistema... Se quiséssemos que toda conta fosse criada com um valor mínimo, poderíamos definir um construtor para isso:

public class Conta {
    // Atributos e métodos...

    public Conta(double quantidade) {
        this.saldo = quantidade;
    }
}

Agora, estamos forçando, obrigando quem for instanciar a classe Conta, a passar um valor inicial para ele. Então teríamos que fazer o seguinte:

public class TestaConta {
    public static void main(String[] args) {
        Conta minhaConta = new Conta(50);
    }
}

Ou seja, a conta está sendo criada já com R$50.00. =)

Mas nada impede de passarmos 0 como parâmetro... Como validar isso? Aí podemos mexer ainda mais no construtor:

public class Conta {
    // Atributos e métodos...

    public Conta(double quantidade) {
        if (quantidade >= 50) {
            this.saldo = quantidade;
        } else {
            System.out.println("Deve ter no mínimo R$50.00!");
        }
    }
}

Resumindo... Criamos um construtor que recebe um double como argumento... E criamos um objeto, uma instancia de Conta, que chamamos de minhaConta... Entendeu? =)

Espero ter ajudado, mas qualquer dúvida, não deixe de postar por aqui! =)

Abraços e bons estudos,

Fábio

Obrigada pela explicação. Você foi muito didático e tranquilo. Valeu!!!