Não entendo o motivo de uma classe precisar de um construtor para ser inicializada.
Quem poder me ajudar fico muito grato.
Um abraço!
Construtor JAVA
3 Respostas
Na verdade, em tese você não precisaria ter os construtores, já que eles são somente métodos, só que com um nome especial (no caso, o nome da própria classe).
A ideia é que isso é algo que se notou que é muito frequente ao se criar um objeto, já querer inicializá-lo com alguns valores.
Porque isso é muito frequente, criaram-se os construtores, que facilitam isso. Em vez de:
Cliente cli = new Cliente();
cli.setNome ("João"); cli.setEndereco ("R. dos Bobos, 0"); cli.setTelefone ("5555-5555");
você teria algo como
Cliente cli = new Cliente("João", "R. dos Bobos, 0", "5555-5555");
// menos claro, mas você não se esquece de preencher com os dados obrigatórios
Outro uso muito frequente é quando você tem um objeto que tem um determinado valor que não pode ser mudado depois de criado. São os tais dos “objetos imutáveis”. O exemplo clássico é java.lang.String; uma string não pode ser alterada depois de criada, somente substituída por outra String.
Bom… vamos lá…
Toda classe Java precisa ter pelo menos um construtor. Isso é fato. Necessáriamente você não precisa criar um construtor, se você não o fizer, o compilador irá criá-lo.
Dentro do construtor são executadas várias ações necessárias para que uma classe seja instanciada. Por exemplo: se a classe possuir uma superclasse, o construtor irá chamar o construtor dessa super classe.
Porque é necessário criar um construtor? Porque é o construtor que é responsável por criar a instancia da classe com suas particularidades, etc…
Espero ter ajudado.
Valeu
Algumas linguagens, em vez de terem construtores (onde a responsabilidade por criar um objeto de uma classe é de um método, chamado ‘construtor’, da própria classe), têm o conceito de “fábricas de objetos”.
Ou seja, outra classe é que é responsável por criar um determinado objeto de uma classe.
Isso pode ser bom (tanto é que em Java você pode ver que isso é muito usado em várias APIs e existe o tal “design pattern” Factory.), ou pode simplesmente ser desajeitado (para qualquer coisinha boba você ter 2 classes, sendo que uma fabrica objetos da outra? Que saco - como você deve saber, nem os seres vivos são assim. Pelo que você sabe, seu pai e sua mãe pertencem à classe Humano, assim como você.).
Quando se criou o Java, copiou-se o conceito do C++ em que a responsabilidade normalmente é da própria classe.