Metodo Construtor

6 respostas
bzanchet

A vantagem é ter código mais conciso, e, por conseqüência, mais legível.

6 Respostas

bzanchet

Não se entendi a pergunta… mas vamos lá.

Não há diferença sensível quanto a performance, e não me vem à cabeça nenhum exemplo de algo que não possa ser feito através de métodos.

Acredito que seja apenas pela concisão/praticidade, mesmo.

pcalcado

Um construtor deve ser responsável por criar o objeto em um estado válido, obedecendo asua invariante. Caso não seja possível em apenas um cosntrutor garantir isso, uma factory pdoe ser mais adequada.

Confuso? Esse texto pode ajudar: Contratos Nulos

cosen

Com sobrecarga de Construtor vc vai poder construir os objetos de maneiras diferentes, só isso.

Pra dar a utilidade disso, tome como exemplo a classe Integer.
Nesta classe existe um construtor que recebe um argumento do tipo primitivo int e outro que recebe uma String.

O que feito para construir um Integer a partir de um int é totalmente diferente do que é feito a partir de uma String. Então faz sentido ter dois contrutores diferentes.

Outra coisa é que vc tem mais controle nos sistemas em que os objetos não ficam mudando de estado,ou seja, nascem de um jeito e morrem do mesmo jeito, esse é um dos motivos para se pensar se realmente os metodos set’s são necessários para vc. Com os set’s vc pode correr o risco desnecessario de mudar o estado de um objeto quando vc não queria isso.

Sei lá acho que é mais ou menos isso.

M

Pessoal,

Estou fazendo manutencao num codigo e devido a logica implementada no codigo atual surgiu a duvida de qual a vantagem de usar a sobrecarga de construtores, nesse codigo que estou fazendo a manutencao ele foi usado somente para setar valores de variaveis o que poderia ser feito por um metodo, segue um exemplo do que estou dizendo:

public class GenericTests {
	
	String x = "inicio";
	
	GenericTests(){
	}
	GenericTests(final String x){
		this.x = x;
	}
	
	public void setX(final String x){
		this.x = x;
	}
	
	public static void main(String[] args) {
		//Utilizarei sobrecarga para setar o valor da variavel x
		GenericTests gt = new GenericTests("sobrecarga construtor");
		System.out.println(gt.x);
		//Utilizarei um metodo para setar o valor da variavel x
		gt.setX("metodo");
		System.out.println(gt.x);
	}
}

Valeu!!

M

ok, qto a ser mais legivel creio q eh um pouco subjetivo mas tudo bem, e qto a OO, performance ou algo q nao possa ser feito atraves de metodos?

valeu!!!

M

eh nesse exemplo q eu useu nao tem muita diferenca mas nesse site tem uma explicacao sobre esse assunto:
http://www.ccnyddm.com/AdvJava/java_constructor_tutorial.htm

valeu!

Criado 7 de setembro de 2006
Ultima resposta 8 de set. de 2006
Respostas 6
Participantes 4