Construtores em java

14 respostas
V

Olá pessoal, alguém poderia me ensinar como faço para criar 2 CONSTRUTORES de uma mesma classe?

14 Respostas

D

Ter mais de um construtor na mesma classe chama-se sobrecarga (overload) de construtores, é bem simples, basta criar seus construtores com diferentes listar de argumentos.
Exemplo:

public class OverloadedConstructor
{
   public OverloadedConstructor(String nome)
   {
    }

   public OverloadedConstructor(int idade)
   {
   } 
}
Andre_Fonseca

Você faz igual a sobrecarga de métodos, lembrando construtores não tem tipo de retorno

class MinhaClasse {

  // construtor sem parâmetros..   
  MinhaClasse() {}

  // construtor com parametros int e double
  MinhaClasse(int var1, double var2) {}

   // construtor com parametros int e String
  MinhaClasse(int var3, String var4) {}

}
F

Olá.

Para usar dois contrutores de uma mesma classe, basta que tenham assinaturas diferentes:

public class Sobrecarga{

       public Sobrecarga(){
                 strMsg = "Sobrecarga";
                 system.out.println(strMsg);
      }

      public Sobrecarga(int i, int j){
                int iResultado = i+j;
                system.out.println(iResultado);      
      }     
}

É bem simples. Espero ter ajudado.

Abraço.

Alkamavo

Bom dia..

Segundo aprendi pode-se se ter ate 3 construtores numa so classe..
ha varia nomeclaturas para eles.
Em portugal (Onde estou a Comer Java) chamam eles : Construtor de Copia, construtor por defeito e construtor rural...

//Construtor por defeito

public class xpto{
private int x;
private int y;

xtpt(){
this.x=0;
this.y=0;}
//Construtor por Rural

public class xpto{
private int x;
private int y;

xtpt( int X, int Y){
this.x=X;
this.y=Y;}
//Construtor por Copia

public class xpto{
private int x;
private int y;

xtpt(xpto Other){
this.x=Other.x;
this.y=Other.y;}
e segundo aprendi podes ter eles todos na mesma classe sem problema nenhum e prevê o uso de kualker tipo de contrutor kuando kiseres construir o objecto...
blackfalcon

Qual o beneficio de se usar dois construtores?

Abraços

pimenta

Depende do seu propósito.

Por exemplo, você criar um objeto com valores padrão, caso não sejam informados os parâmetros.

public class Exemplo{

	String nome;
	int idade;

	//Construtor pra inicializar campos com valores padrão
	public Exemplo(){
		nome = "Eugênio";
		idade = 24;
	}
	
	//Construtor pra inicializar somente idade com o valor informado pelo usuário
	public Exemplo(int i){		
		idade = i;
	}
	
	//Contrutor pra inicializar somente nome com o valor informado pelo usuário
	public Exemplo(String n){		
		nome = n;
	}
	
	//Restante do código
}

Aí alguns exemplos, cara...

sergiotaborda

Alkamavo:
Bom dia…

Segundo aprendi pode-se se ter ate 3 construtores numa so classe…
ha varia nomeclaturas para eles.
Em portugal (Onde estou a Comer Java) chamam eles : Construtor de Copia, construtor por defeito e construtor rural…

Não ha limite para o numero de construtores em uma classe. Isso que vc enumerou são tipos de construtores.

rafaeldiego

Seguinte, até onde sei, para fazer mais de um construtor, você tem que diferenciá-los pela sua assinatura (nos seus parâmetros).

Creio que uma classe pode ter seu nº de construtores igual ao nº de TIPOS de atributos que tem +2 (+ um, q seria o vazio, e + outro, que seria com todos atributos)… alem de várias combinações entre estes tipos e atributos.
obs: não limitei o nº de construtores, apenas dei uma ideia da quantidade que se pode ter

se estiver enganado, corrija, mas creio que seja isso mesmo.

Ex:
uma classe com 3 construtores diferentes. (se usar a criatividade, ainda pode ter mais.

public class Construct{
  int idade;
  int altura;

  //sem parametros
  public Construct(){
    idade = 0;
    altura =0;
  }

  //com 1 parametro (idade)
  public Construct(int idade){
    this.idade = idade;
    this.altura =0;
  }

  //com 2 parametros (idade, altura)
  public Construct(int idade, int altura){
    this.idade = idade;
    this.altura = altura;
  }
  
  public void print(){
	  System.out.println("idade" + this.idade + "altura" + this.altura);
  }

  public static void main(String[] args){
    int valoridade = 1;
    int valoraltura = 2;

    Construct con = new Construct();
    Construct con1 = new Construct(valoridade);
    Construct con2 = new Construct(valoridade, valoraltura);
    con.print();
    con1.print();
    con2.print();
  }
}
blackfalcon

Entendi… valeu pimenta e rafaeldiego.

So uma coisa rafaeldiego, no seu codigo:

public Construct(int idade){ this.idade = idade; this.altura = 0; }

Esse this.altura = 0, nao precisaria do this ne… eu testei aqui e funcionou corretamente. Ja vi o pessoal falando que as vezes é usado o this mesmo sem nem precisar, porque ajuda na leitura do codigo…

Usar o this prejudica alguma coisa na velocidade de execução do projeto? Nao ne?

Abraços

Andre_Fonseca

o this referencia a propria classe, vc nao precisa colocar, serve para distinguir exemplo

public void meuMetodo(int var) { // atribui para a variavel da classe o valor do parametro this.var = var; }

o super faz a mesma coisa com o pai

public Construtor() { // chama o construtor sem parametros do pai (herança) super(); }
parece que tá todo mundo afiado em construtores aqui… :smiley:

blackfalcon

Nao entendi muito bem o que voce quis dizer sobre o super… poderia dar um exemplo favor favor? Obrigado.

Abraços

pimenta

Ele quis dizer, creio eu, que o super() chama o construtor sem parâmetros da classe pai.
Se você usar super(idade), sendo idade um int, vai ser chamado o construtor com um parâmetro int da classe pai…

Pegou?

blackfalcon

pimenta:
Ele quis dizer, creio eu, que o super() chama o construtor sem parâmetros da classe pai.
Se você usar super(idade), sendo idade um int, vai ser chamado o construtor com um parâmetro int da classe pai…

Pegou?

Entendi sim pimenta… brigadao :slight_smile:

Abraços

T

o que é um construtor vazio também chamado de construtor PADRÃO

Criado 20 de maio de 2008
Ultima resposta 5 de set. de 2008
Respostas 14
Participantes 10