[color=“blue”]Oi pessoal !!! Estava lendo no livro Core Java sobre construtores, mais não entendi a nessecidade dos mesmos… eu não poderia simplesmente instanciar objetos e inicializar variáveis no próprio main ? :idea:
Se eu entendi bem, a vantagem disso é que você pode separar os objetos que serão inicializados em construtores diferentes para que não seja necessário iniciar todos de uma vez… é isso ? :roll:
“VM, quando eu solicitar uma instancia nova dessa classe, quero que voce execute as tais linhas de codigo no momento do instanciamento”…
Construtores podem ser usados para iniciar variaveis com valores defaults, ou qualquer outro tipo de acao que voce pode fazer em metodos normais. Porem, nao eh comum nem muico aconselhavel deixar a logica no construtor, ao menos que voce tenha um otimo motivo para isso.
Por exemplo,
class MinhaClasse {
private String nome;
public MinhaClasse() {
this.nome = "Sem nome";
}
}
Assim, quando voce fizer
MinhaClasse c = new MinhaClasse();
a propriedade “nome” da classe tera como valor padrao a string “Sem nome”…
Claro que nada impede de voce setar o valor das variaveis em qualquer outra parte do codigo… o Construtor seria uma forma conveniente de fazer determinadas cosias "automaticamente’ no momento da cricao da classe.
Diogenes, seu exemplo está certo mas prefiro dizer que os valores passados ao construtor devem ser de inicialização do objeto (como seu comportamento) e de variáveis. Substituir setters usando o construtor não é uma boa prática.
[color=“blue”]Oi pessoal !!! Valeu pelas dicas, mas acho que isso aí que você disse Diógenes viola o encapsulamento dos objetos… ou mesmo atributos. :?:
hehhe, você resolve um problema mais pelo que percebi provoca outro, mais de qualquer jeito valeu pelas dicas… ja deu pra ter uma idéia de como posso utilizar os contructors… :roll:
Não acho que isso viola o encapsulamento. Vc poderia violar se criasse atributos publicos. Isso parece ser só uma má prática, só que confesso que já utilizei essa “má prática” algumas vezes.
Uma dessas situações foi quando precisei criar uma classe para um objeto que por determinado motivo não poderia ser alterado depois de instanciado, ou seja, a classe não teria setters. Nesse caso, o proprio construtor tratava de popular os atributos do objeto.
Como o nome diz o construtor deve servir para construir as propriedades básicas e iniciais de um objeto.
Usar métodos set e get realmente podem dar preguiça para escrever e usar, mas fica muito mais fácil para quem recebe apenas o .class e a documentação da sua classe. Para você que vai desenvolver a classe fica mais fácil e organizado para validar o que está entrando e saindo do objeto além de facilitar a divulgação de uma exceção específica para aquele caso em especial.
é isso mesmo galera! perguntar e trocar experiência é inteligência
Acredito que a criação dos construtores parametrizados são muito úteis, mas pelo que vi no exemplo acima, uma coisa não substitui a outra: inclusive o construtor pode estar fazendo chamadas aos setters e getters respectivos, fazendo eventuais validações em um só lugar.
Mas uma dúvida: em Java é permitido um contrutor encaminhar chamadas a outro?