Construtores

Galera, eu sou nova em java.
Gostaria q alguém pudesse me explicar de uma vez por todas pra que servem os construtores…
Eu ja fiz uma aplicação em java e nao criei nenhum construtor… talvez o netbeans fez isso sozinho, mas eu nao fiz,…
entao eu me pergunto se é obrigado a criar construtores, se é melhor, se vai ter algum problema futuramente na aplicação…

Obrigada. :wink:

Se você não declara construtores para seu objeto, o java irá criar um default para você. Suponha que você codou:

public class Carro {
     private String cor;  
}

o java irá assumir que seria o mesmo que:

public class Carro {
      private String cor;
      public Carro() {
            
      }
}

Agora vamos supor que você queira que toda vez que alguem for usar um carro, você obrigue a pessoa a dizer pelo menos uma cor, você faria assim:

public class Carro {
      private String cor;
      public Carro(String umaCor) {
              cor = umaCor;
      }
}

Se você tentar agora fazer no seu código:

Carro carro = new Carro();

você não vai conseguir, pois declarou pelo menos um construtor. Agora, a unica maneira de instancia seu Carro, seria fazendo algo como:

Carro carro = new Carro("Amarelo");

aqui tem uma explicação melhor: http://www.dca.fee.unicamp.br/cursos/PooJava/metodos/construtor.html

[]'s

Valeu… Muito Obrigada. :slight_smile:

Só mais uma dúvida, mas quando eu coloco parâmetro no construtor eu tenho q colocar no momento da instância o q ele pede… ok?, entao quando eu que coloco antes, nao é o usuário q irá colocar?

Quando vc instancia um objeto, por exemplo:

Objeto nomeDoObjeto = new Objeto();

Você pode passar os parâmetros, caso a sua classe tenha um construtor que receba parâmetros.

Por exemplo:

Objeto nomeDoObjeto = new Objeto(parametro1, parametro2, parametro3);

Quando você cria uma classe e não declara um construtor, a classe têm automaticamente o construtor vazio.
Nesse caso você pode instanciar o objeto e depois utilizar os métodos objeto.setParametro1(), objeto.setParametro2(), etc, para preencher os campos do objeto.

Só não esqueça de uma coisa:

Se vc criar um construtor qualquer, o construtor vazio não é mais disponibilizado automaticamente.

É preciso declarar o construtor vazio caso deseje instanciar o objeto sem passar parâmetros.

Uma classe por ter vários construtores.

Espero ter ajudado.

Ajudou sim.

Só mais uma dúvida, mas quando eu coloco parâmetro no construtor eu tenho q colocar no momento da instância o q ele pede… ok?, entao quando eu que coloco antes, nao é o usuário q irá colocar?

Você pode sim mandar um parâmetro do ‘usuário’.

por exemplo, vc pode chamar o construtor da classe enviando como parâmetro um dado que veio de outro lugar, como um formulário html ou algo assim.
A única preocupação é passar um parâmetro que seja exatamente do mesmo tipo que está declarado na classe.

Conseguiu entender?

sim… e com a prática acho q irei entender melhor.