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?
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.