Construtor

6 respostas
edymrex

Já me deparei com várias classes com construtores privados, mas não tenho conhecimentos nem teórico
e nem prático quanto a sua utilização já procurei mas não achei nada convicente alguém sabe o porque
da sua utilização ?

6 Respostas

A

Olá

Até agora o unico uso que conheco para uma classe com contrutores privados é para implementar o padrão singleton:

http://en.wikipedia.org/wiki/Singleton_pattern

o construtor privado server para voce impedir que alguem instancie a classe (Normalmente), e então voce cria metodos staticos para fazer isso.

italo.vendrameto

Isso é utilizado para evitar que outras classe criem instâncias dessa classe, observe que normente esse tipo de classe possui métodos getInstance ou coisa do tipo para retornar uma instancia dessa classe

edymrex

Quando eu declaro o construtor private ele sobrescre o construtor padrão da classe ?

ViniGodoy

Além do Singleton, outro uso é para evitar que se crie instâncias daquelas classes cheias de métodos estáticos (ECA!).

Por exemplo:

public final class Math {
   private Math(){} //Impede que seja feito um Math m = new Math();

   public static double sqrt(double num) { ... };
   public static double pow(double num, int pow) { ... };
}
edymrex

p/ViniGodoy
Cara implemntei o Singleton se eu cria uma Variável do tipo Singleton e chamar o método
getInstancia da na mesma que instancia a classe olha só:

public class Singleton 
{
	
	
	/**
	 * @description  Classe que usa o design patern Singleton
	 *               para somente uma instância da classe
	 */
	
	private Singleton(){}
	
	private  static Singleton INSTANCIA = new Singleton();
	
	public static Singleton getInstancia()
	{
		// Cria um método estático para a instancia da classe
		return Singleton.INSTANCIA;
	}
	
	public void mostraMsm()
	{
		System.out.println("Classe Singleton");
	}
	
	

}

class Verifica
{
	public static void main(String args[])
	{
		  Singleton vet[] = new Singleton[10];
		  int i;
		  
		  for(i=0;i<vet.length;i++)
		  {
			  vet[i]=Singleton.getInstancia();
		  }
		  
		  for(i=0;i<vet.length;i++)
		  {
			  vet[i].mostraMsm();
		  }
	}
}
edymrex

Já foi explicado o porque o construtor private, agora se eu deixar o construtor como default tem
alguma diferença…?

Criado 2 de outubro de 2007
Ultima resposta 5 de out. de 2007
Respostas 6
Participantes 4