Ir ao conteúdo
  • Cadastre-se

contrutor encadeamento java


Posts recomendados

Bom estou aprendendo java e tenho uma duvida com questão de construtores .

O script é esse : 

class Conta {
 public int numero ;
 public double limite ;

 public Conta (int numero ) {
 this . numero = numero ;
 }

 public Conta (int numero , double limite ) {
 this ( numero ) ;
 this . limite = limite ;
 }

a minha dúvida é bom no this ( numero ) ; não sei qual a funcionalidade dele ali .

 

Link para o comentário
Compartilhar em outros sites

9 horas atrás, natan500 disse:

nao entendi kkk

Você tem dois construtores nessa classe.

public Conta (int numero ) {
 	this.numero = numero;
}
 
public Conta (int numero , double limite ) {
 	this(numero);
 	this.limite = limite;
}

Quando a classe for instanciada usando segundo construtor (com dois argumentos), ao executar

this(numero);

Seria o mesmo que chamar

 

public Conta (int numero) {
	this.numero = numero;
}

Sempre que você tem dúvida com isso, coloque um break point na linha que você tem dúvida e depure com o F7 (uso Netbeans) para fazer um step in e ver o que acontece.

 

Se colocar um break point em this(numero) e pressionar F7, você vai observar que o próximo ponto/linha a ser depurada é exatamente o primeiro construtor. Depois disso o código segue executando em

this.limite = limite;

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em 12/03/2017 às 20:51, TwistedSoul disse:

Você tem dois construtores nessa classe.


public Conta (int numero ) {
 	this.numero = numero;
}
 
public Conta (int numero , double limite ) {
 	this(numero);
 	this.limite = limite;
}

Quando a classe for instanciada usando segundo construtor (com dois argumentos), ao executar


this(numero);

Seria o mesmo que chamar

 


public Conta (int numero) {
	this.numero = numero;
}

Sempre que você tem dúvida com isso, coloque um break point na linha que você tem dúvida e depure com o F7 (uso Netbeans) para fazer um step in e ver o que acontece.

 

Se colocar um break point em this(numero) e pressionar F7, você vai observar que o próximo ponto/linha a ser depurada é exatamente o primeiro construtor. Depois disso o código segue executando em


this.limite = limite;

 

certo mais o que isso altera no código , eu fiz desse jeito e na hora de dar o Println eu usei as referencias e continuo com o mesmo valor que eu passei como parametros  

Link para o comentário
Compartilhar em outros sites

@natan500 Mas você faz mais alguma coisa com esses valores?

 

Se você passar como parâmetro 50 e 500, respectivamente, ao dar um print nesses valores vai sair exatamente 50 e 500. Você apenas está atribuindo valores às variáveis de classe desse objeto e mais nada.

 

Se precisa de uma resposta e/ou cálculo em cima desses números, precisa implementar o código que faça isso.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Só complementando... o this traduzindo significa "este", ou seja, nesse contexto ele serve para referenciar ao próprio objeto.

 

Ex.:

  public Conta (int numero ) {
    this.numero = numero ;
  }

Veja, o this.numero equivale a "esteObjetivoQueEstáSendoExecutadoAgora.numero".

 

Como o "." serve para "acessar algo do objeto", ao usar "this.numero" eu estou acessando o atributo numero do tal objeto... aquele que está declarado no objeto em si, lá em cima (public int numero;)

 

Já o "numero" que vem depois do igual (=), se refere ao campo que foi passado pelo parâmetro... observe que os atributos/variáveis tem o mesmo nome (para o Java, é apenas uma coincidência. Para o programador, apenas para facilitar a associação de uma coisa com a outra)... o "this" aí está servindo para dizer que o da esquerda é o do objeto e o que não tem o this é o do parâmetro..

 

 

 

Já aqui:

public Conta (int numero , double limite ) {
 	this(numero);
 	this.limite = limite;
}

Basicamente esse "()" serve para chamar um "procedimento", nesse caso, ao se referenciar ao objeto (usando o this), você está se referindo ao um procedimento específico, que é chamado de "construtor"  (que ajuda a "construir" um objeto de uma classe).

 

Logo equivale a: esteObjetivoQueEstáSendoExecutadoAgora(), ou seja, um construtor desse objeto... como está passando uma parâmetro (int), o Java vai chamar o construtor que tem esse mesmo tipo no parâmetro, logo o public Conta (int numero). Veja que não existe correlação com o "numero" que você passou, e o "numero" que está no objeto... o que importa é o tipo!!! se é "int", então serve... (ex.: se fosse int e double seria o outro)

 

Ai vem a pergunta: por não faz assim?

public Conta (int numero , double limite ) {
 	this.numero = numero
 	this.limite = limite;
}

Daria para fazer... depende do contexto... nesse caso, tá mais para "demonstração que o recurso existe" ou "se acostumar uma boa prática".  (pelo assim que entendo no momento)

 

Veja esse exemplo:

  public Conta (int numero) {
    Double limitePadrao = 100.0; 	
    this.numero = limitePadrao;
    this.limite = limite;
  }

Nesse contexto, caso seja informado só o número, eu determinei o limite padrão...

 

Veja que as duas linhas de baixo equivalem (fazem a mesma coisa) ao segundo construtor... poderia ficar assim:

  public Conta (int numero ) {
    Double limitePadrao = 100.0;
    this(numero,limitePadrao);
  }

Entende?

 

 

RESUMINDO:

1) o this simplesmente serve para referenciar o próprio objeito (ai você pode acessar um atributo ou um procedimento dele);

2) um construtor nada mais é que um procedimento como qualquer outro, o que muda é que ao criar um objeto, o Java chama um deles;

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em 14/03/2017 às 11:19, Simon Viegas disse:

Só complementando... o this traduzindo significa "este", ou seja, nesse contexto ele serve para referenciar ao próprio objeto.

 

Ex.:


  public Conta (int numero ) {
    this.numero = numero ;
  }

Veja, o this.numero equivale a "esteObjetivoQueEstáSendoExecutadoAgora.numero".

 

Como o "." serve para "acessar algo do objeto", ao usar "this.numero" eu estou acessando o atributo numero do tal objeto... aquele que está declarado no objeto em si, lá em cima (public int numero;)

 

Já o "numero" que vem depois do igual (=), se refere ao campo que foi passado pelo parâmetro... observe que os atributos/variáveis tem o mesmo nome (para o Java, é apenas uma coincidência. Para o programador, apenas para facilitar a associação de uma coisa com a outra)... o "this" aí está servindo para dizer que o da esquerda é o do objeto e o que não tem o this é o do parâmetro..

 

 

 

Já aqui:


public Conta (int numero , double limite ) {
 	this(numero);
 	this.limite = limite;
}

Basicamente esse "()" serve para chamar um "procedimento", nesse caso, ao se referenciar ao objeto (usando o this), você está se referindo ao um procedimento específico, que é chamado de "construtor"  (que ajuda a "construir" um objeto de uma classe).

 

Logo equivale a: esteObjetivoQueEstáSendoExecutadoAgora(), ou seja, um construtor desse objeto... como está passando uma parâmetro (int), o Java vai chamar o construtor que tem esse mesmo tipo no parâmetro, logo o public Conta (int numero). Veja que não existe correlação com o "numero" que você passou, e o "numero" que está no objeto... o que importa é o tipo!!! se é "int", então serve... (ex.: se fosse int e double seria o outro)

 

Ai vem a pergunta: por não faz assim?


public Conta (int numero , double limite ) {
 	this.numero = numero
 	this.limite = limite;
}

Daria para fazer... depende do contexto... nesse caso, tá mais para "demonstração que o recurso existe" ou "se acostumar uma boa prática".  (pelo assim que entendo no momento)

 

Veja esse exemplo:


  public Conta (int numero) {
    Double limitePadrao = 100.0; 	
    this.numero = limitePadrao;
    this.limite = limite;
  }

Nesse contexto, caso seja informado só o número, eu determinei o limite padrão...

 

Veja que as duas linhas de baixo equivalem (fazem a mesma coisa) ao segundo construtor... poderia ficar assim:


  public Conta (int numero ) {
    Double limitePadrao = 100.0;
    this(numero,limitePadrao);
  }

Entende?

 

 

RESUMINDO:

1) o this simplesmente serve para referenciar o próprio objeito (ai você pode acessar um atributo ou um procedimento dele);

2) um construtor nada mais é que um procedimento como qualquer outro, o que muda é que ao criar um objeto, o Java chama um deles;

realmente , com a sua resposta eu compreendi a questão , obg

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!