eu nao consegui compreender muito a utilizacao do "this". no video e na "explicacao" foi falado que nao eh obrigatorio o uso do this. Se nao eh obrigatorio, pq utiliza-lo? e em quais casos devo utilizar?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
eu nao consegui compreender muito a utilizacao do "this". no video e na "explicacao" foi falado que nao eh obrigatorio o uso do this. Se nao eh obrigatorio, pq utiliza-lo? e em quais casos devo utilizar?
Boa noite Leonardo, tudo bem!?
Neste exercício, se você escrever um método mostra na classe Funcionario sem usar o this em uma das linhas, não terá erro, vai funcionar:
void mostra(){
System.out.println("Nome: "+nome);
System.out.println("Departamento: "+this.departamento);
System.out.println("Salário: "+this.salario);
System.out.println("Data de Contratação: "+this.dataEntrada.getDataFormatada());
System.out.println("RG: "+this.RG);
System.out.println("");
}
Acredito que nas próximas lições, o uso do 'this' ficará mais claro.
Por exemplo, quando estiver na lição que fala de encapsulamento e criação de métodos públicos, você poderá ter algo do tipo:
class Funcionario{
// Demais atributos.
private double salario;
public setSalario(double salario){
if(salario>=0){
this.salario = salario
}else{
System.out.println("O salário não pode ser um valor negativo!")
}
// Demais métodos
}
}
No caso acima, o salário só pode ser acessado DIRETAMENTE, na classe Funcionario, pois ele é precedido da palavra reservada 'private'. O private é um modificador de acesso que impede que outras classes( como a que contém o main, por exemplo ) acesse diretamente o atributo. Ele é importante para garantir o encapsulamento. Ou seja, as regras de negócio de uma determinada classe é responsabilidade exclusiva da mesma. Sendo assim, eu não posso na minha classe de teste fazer algo do tipo:
class Test{
public static void main(String[] args){
Funcionario f = new Funcionario();
f.salario = -100; //Não compila.
f.salario = 100;// Também não compila.
f.setSalario(100)/* Atribui o valor de salário = 100 ao atributo salário do objeto f */
}
}
o método setSalario recebe um parâmetro salario e o que ele faz além de testar uma condição fictícia de regra de negócio é:
this.salario = salario;
Ou seja, na linha acima estou dizendo que o valor do salario do meu objeto em memória vai receber um valor salario como parâmetro. Eles possuem o mesmo nome!!!
Com o this, é possível diferenciá-los.
Este é um exemplo muito simples... Com o decorrer das lições, você verá coisas mais interessantes, como por exemplo o uso de construtores. Ainda sim, é considerada boa prática usar o this.
Espero ter ajudado e não complicado ainda mais . Siga as lições com calma. :)
De qualquer forma, o fórum está aí para isso!
Abs, Bruno Giminiani.
Leonardo o this é apenas uma maneira de dizer que o atributo é o atribulo daquela mesma classe e não de outra.
public class Carro {
private String cor;
this.cor = "Amarelo";
}
podem exisitir outros atributos cor em outras classes ou pacotes, e this faz essa função de dizer que é o atributo daquela classe.