Construtores - explicação

Gostaria de entender p/ que serve o construtor. Li que serve p/ construir o objeto (é claro, está no nome hehe) mas tipo… eu poderia ao invés de criar um construtor e atribuir os valores aos atributos dentro do construtor, atribuir os valores aos atributos apenas na classe?

Nesse exemplo
class ponto{
public int x =0;
public int y=0;

Ponto(int a, int b){
x=a;
y=b;
}
}

não entendi qual a finalidade desse construtor. Porque por mim… eu criaria tudo na classe e deixava apenas o construtor padrão que o java cria. Entenderam minha dúvida? eu não sei p/ que e quando criar um construtor além do que o java já cria

Se fizeres tudo na classe provavelmente só vais instanciar uma vez… por exemplo:


public class ponto {

int x = 4;
int y =3;

//Ao instanciares um objecto dessa classe ele terá sempre os mesmos atributos

Ponto p = new ponto(); 
Ponto p2 = new ponto(); //Tem exactamente os mesmos atributos que o ponto p 

Com o uso de um construtor podes tornar o código fica mais reútilizável:


public class ponto {

int x = 0;
int y = 0;

ponto(int a,int b) {

x=a;
y=b
}

//A diferença principal, neste caso, é que com o construtor tu defines os atributos no momento de instanciação.
Ponto p = new ponto(2,3);
Ponto p2 = new ponto(1,1);

Espero que tenhas entendido mais ou menos o uso de um construtor e a poupançã de código e organização que este permite.

Pensa no construtor dessa forma:

Eu te falo para criar um ponto, ai vc me diz: “quais as coordenadas do ponto?”, explicando, um ponto não existe sem coordenadas, mas nem todos pontos tem a mesma coordenada, faz mais sentido criar um ponto dizendo as coordenadas dele.
Outro exemplo, quero que você crie um leitor de arquivos, ai vc me diz: “para qual arquivo?!” um leitor de arquivos sempre vai necessitar de um arquivo, deve existir um arquivo para ele ler… se não existir, o que ele vai ler?! não existe leitor de arquivo sem arquivo para ler… logo, para se criar um leitor de arquivo (FileReader) vc precisa informar o arquivo

Esses são alguns exemplos que faz todo sentido o cosntrutor ter parâmetros…

Outros motivos para vc implementar o construtor é quando precisa executar alguma lógica especifica toda vez que o objeto é criado…

bele?!

Valeu pessoal, clareou bastante =)