Não usei This, mas funcionou. "This" é dispensável? [Resolvido]

9 respostas
M

Fiz dois arquivos para ler nome, data de nascimento e mostrar a idade. Não usei “This”, mas funcionou.
Eu deveria ter colocado?

Arquivo 1:

class Pessoa {

String nome;

int datanasc;

void anos(int atual){

int idade = atual - datanasc;

System.out.println(idade);

}

}

Arquivo2:

class DadosPessoais {

public static void main (String[] args){

Pessoa p1;

p1 = new Pessoa();

p1.nome = Carlos;

p1.datanasc = 1982;

System.out.println(p1.nome);

p1.anos(2011);

}

}

9 Respostas

Elizeu_Santos

cara, o this é usado para dizer que o atributo, objeto ou seja la o que for pertence a classe e não ao método em questão.

exemplo,
você cria uma classe que tem uma variável conexao.
ai você cria um método que recebe uma conexão de nome “conexao” e retorna o driver da mesma.
dentro deste método se você quiser falar da variavel da classe, usara “this.conexao” e se quiser falar da variável conexão que é passada por argumento para o método você vai usar simplesmente “conexao”

conseguiu entender?

M

Elizeu_Santos:
cara, o this é usado para dizer que o atributo, objeto ou seja la o que for pertence a classe e não ao método em questão.

exemplo,
você cria uma classe que tem uma variável conexao.
ai você cria um método que recebe uma conexão de nome “conexao” e retorna o driver da mesma.
dentro deste método se você quiser falar da variavel da classe, usara “this.conexao” e se quiser falar da variável conexão que é passada por argumento para o método você vai usar simplesmente “conexao”

conseguiu entender?

Eliseu, consegui entender, sim!
Muito obrigado!!

O This é para deixar claro que quero usar a variável global.

Valeu!

Elizeu_Santos

+/- isso. mais você entendeu!

sobre variável global…
no java é um pouco diferente. ela seria global se fosse estática e publica, para ser uma constante publica teria de ser publica, estática e “final” (valores devem ser definidos antes ou no momento da construção). mais isso você vai entender mais para frente.
se for possível, edit seu primeiro post nesse tópico e acrescente [Resolvido] antes do titulo.

abraço.

ViniGodoy

Oi Maskara.

Sempre que for postar códigos, por favor, siga essas dicas para deixa-lo colorido e formatado. Senão fica difícil entender:

Quanto ao uso do this. De maneira geral, recomenda-se que você use a menor quantidade de código possível para representar alguma coisa.
Por isso, na maior parte das vezes é desnecessário usar o this para se referir a métodos ou variáveis da própria classe. A única exceção à regra é se houver ambiguidade, ou seja, se um parâmetro local for idêntico a um nome de método, como já explicou o Elizeu.

A regra de evitar código redundante também se aplica a interfaces. Você não precisa dizer que métodos de interface são public, pois não há como ser o contrário.

Agora, tudo vai depender, claro, da empresa onde você trabalhe. Há locais onde usar o this o tempo todo é considerado boa prática. Só é bom saber que a linguagem não considera isso necessário.
Algumas IDEs podem gerar warnings caso o this não seja usado.

Elizeu_Santos

foi mal vinny, esqueci de falar para ele sobre o “code”. =[

rmendes08

Maskara:
Elizeu_Santos:
cara, o this é usado para dizer que o atributo, objeto ou seja la o que for pertence a classe e não ao método em questão.

exemplo,
você cria uma classe que tem uma variável conexao.
ai você cria um método que recebe uma conexão de nome “conexao” e retorna o driver da mesma.
dentro deste método se você quiser falar da variavel da classe, usara “this.conexao” e se quiser falar da variável conexão que é passada por argumento para o método você vai usar simplesmente “conexao”

conseguiu entender?

Eliseu, consegui entender, sim!
Muito obrigado!!

O This é para deixar claro que quero usar a variável global.

Valeu!

Vou subir em uma torre bem alta e gritar lá de cima:

[size=18]
NÃO EXISTEM VARIÁVEIS GLOBAIS EM JAVA!!!

ATRIBUTOS DE CLASSE NÃO SÃO VARIÁVEIS GLOBAIS!!!
[/size]

ViniGodoy

rmendes08:
[size=18]
NÃO EXISTEM VARIÁVEIS GLOBAIS EM JAVA!!!

ATRIBUTOS DE CLASSE NÃO SÃO VARIÁVEIS GLOBAIS!!!
[/size]

Embora, na prática, um public static sem o final seja quase tão global quanto uma variável global, e igualmente uma má prática.

Elizeu_Santos

ViniGodoy:
rmendes08:
[size=18]
NÃO EXISTEM VARIÁVEIS GLOBAIS EM JAVA!!!

ATRIBUTOS DE CLASSE NÃO SÃO VARIÁVEIS GLOBAIS!!!
[/size]

Embora, na prática, um public static sem o final seja quase tão global quanto uma variável global, e igualmente uma má prática.

eu não sabia que era má prática… vivendo e aprendendo.

abraços.

M

Muito obrigado, Pessoal!!

Criado 21 de abril de 2011
Ultima resposta 23 de abr. de 2011
Respostas 9
Participantes 4