Declaracao da variavel de objeto e comando this

12 respostas
P

Boa noite,
estou com uma duvida aqui que tentei reler diversas vezes a apostila e soh me complico mais.

vou direto ao assunto ok ?

qual a diferenca entre

Conta minhaConta;
minhaConta = new Conta();

E

minhaConta Conta;
minhaConta = new Conta();

nao entendi o motivo de poder inverte a declaracao das variaveis:S

e para que serveafinal o comando this. ?
exemplo this.saldo (Apostila caelum)

Muito obrigado a todos!

12 Respostas

P

outra cosia,
eu poderia encurtar o codigo declarando ele assim:

Conta minhaConta = new Conta();

?

gilmaslima

Bom vamo ver se consigo lhe ajudar:

// Declaração de variavel minhaConta do tipo Conta (ainda não existe um objeto)
Conta minhaConta

// instancia o objeto minhaConta (cria o objeto)
// sempre depois do new vem o construtor da classe
// toda classe tem um construtor, se vc não colocar um o compilador põe um sem argumentos  
minhaConta = new Conta();

O comando this refere-se sempre ao objeto que está em uso no momento

exemplo
// quando eu uso this.text é o mesmo que
// MyThis m = new MyThis();
// m.text = "texto";

public class MyThis {
      String text;
      public void changeThis(String s){
      this.text = s;
      }
      
}

Espero ter ajudado!

P

opa valeu por responder camarada,
sobre a declaracao de variavel de objeto eu ate peguei, mas o this ainda estou meio que com duvidas.
vou ver se releio varias vezes ate entender :smiley:

ou se alguem puder tentar me explicar de outra forma tambem to aceitando :smiley:

thiagocg

Voce pode sempre declarar o objeto antes de usa-lo

//declarando o objeto, sempre que declarar informe um valor para que este objeto possa ser utilizado
Pessoa pessoa = null

//Voce também pode declará-lo e instanciá-lo
Pessoa pessoa = new Pessoa();

O comando this é para dizer q vc esta utilizando um objeto global, declaro e acessado por toda sua classe, pois as vezes vc pode ter, mesmo não sendo aconselhável, objetos com mesmo nome declarado, sendo um local de seu metodo e um global de sua classe.

Espero ter ajudado!

Abraço!

M

pedrolima88:
opa valeu por responder camarada,
sobre a declaracao de variavel de objeto eu ate peguei, mas o this ainda estou meio que com duvidas.
vou ver se releio varias vezes ate entender :smiley:

ou se alguem puder tentar me explicar de outra forma tambem to aceitando :D

Imagina que você tem um int saldo; na classe Conta:

public class Conta {

int saldo;
}

Quando você queiser setar algum valor ao saldo, por exemplo, não há necessidade de usar o this, pois o this ultilizamos para diferenciar atributos da classe de outras classe. This = “esse”.

Mas se tivessemos:

public class Conta {

|--> int saldo;
|
|        public void setSaldo(int saldo) {
|      
|_ >  this.saldo = saldo; // Este segundo será o que entramos como parâmetro do método setSaldo.
      
 /*Aqui surgiu a necessidade de usarmos o "this", pois o objeto int que entrará como parâmetro também se chama "saldo", para a classe entender que
     você quer setar o valor no saldo dela, você ultiliza o "this"*/

    }
}

Sacou?

abçs

aix
thiagocg:
Voce pode sempre declarar o objeto antes de usa-lo
//declarando o objeto, sempre que declarar informe um valor para que este objeto possa ser utilizado
Pessoa pessoa = null

//Voce também pode declará-lo e instanciá-lo
Pessoa pessoa = new Pessoa();

O comando this é para dizer q vc esta utilizando um objeto global, declaro e acessado por toda sua classe, pois as vezes vc pode ter, mesmo não sendo aconselhável, objetos com mesmo nome declarado, sendo um local de seu metodo e um global de sua classe.

Espero ter ajudado!

Abraço!

tipo isso:
class Conta {

	int numero;
	String nome;
	double saldo;
	double limite;
	
	void saca(double saldo) {
		this.saldo = this.saldo - saldo;		
	}
	
	void deposita(double quantidade) {
		this.saldo = this.saldo + quantidade;
	}
	//ta dizendo que this.saldo é sua variavel de instancia e que saldo é sua variavel local do metodo
        //palavra chave this para mostrar que esse é um atributo, e não uma simples variável.
        // mas isso é opcional
	void transfere(Conta destino,double saldo) {
		this.saldo = this.saldo - saldo;
		destino.saldo = destino.saldo + saldo;
	}
P

ahhh agora sim estou sacanado, o this ele aponta para avariavel global, ou seja a que esteja fora do metodo certo ?
o uso dele pode ser aconselhavel somente quando tem o mesmo nome as variaveis ou foi apenas coencidencia?

valeu :smiley:

khaoz

Você pode usar o this sempre que se referir a um membro da classe e não somente quando houver ambiguidade de nomes.

P

opa!
muito obrigado mesmo.
Soh para confirmar entao:
isso aqui,

Conta c1;
c1 = new Conta();

eh a mesma coisa que isso aqui:
Conta c1 = new Conta();

?

valeu!

aix

pedrolima88:
opa!
muito obrigado mesmo.
Soh para confirmar entao:
isso aqui,

Conta c1;
c1 = new Conta();

eh a mesma coisa que isso aqui:
Conta c1 = new Conta();

?

valeu!

é isso ai são 3 etapas segundo a kathy sierra declaração, criação e atribuição

1 - Conta c1 --> declaração da variavel
2 - new Conta(); --> solicita a JVM alocar espaço pra um novo objeto
3 - Cota c1 = new Conta(); --> vincule o objeto e a referência, atribui o novo objeto Conta a variável de referência c1

P

opa beleza, mas isso esta violando alguma norma de boa programacao ? tipo as normas da sun ou algo do tipo? ainda nao cheguei a ler elas :T

aix

hehehheeh, vc faz umas perguntas engraçadas, não ta violando nada naum , esse é o caminho.

Criado 6 de outubro de 2008
Ultima resposta 6 de out. de 2008
Respostas 12
Participantes 6