Java parte 2 / Aula 3 / Atividade 7 Assim como o this é utilizado para especificar um atributo (this.saldo) daquela conta, posso usá-lo para um método (this.saca)?
Java parte 2 / Aula 3 / Atividade 7 Assim como o this é utilizado para especificar um atributo (this.saldo) daquela conta, posso usá-lo para um método (this.saca)?
Patrícia, Estou voltando a estudar Java agora mas lembro deste tópico ainda do tempo da faculdade, uns 6 anos atrás. O "this" não é necessáriamente para especificar um atributo, ele especifica que o atributo ao qual você se refere, é um atributo da classe. Guarde bem isso (This--> atributo da classe). Respondendo a sua pergunta: Pode sim utilizar, inclusive esta é a finalizadade dele, conseguir apontar para um atributo que não é do método e sim classe instanciada, ou seja, você pode inclusive ter um outro atributo com o nome saca dentro do método , se colocar "this" então está se referindo a atributo da classe e não àquele local dentro do método. Espero ter ajudado.
Bom dia Patricia. O "this" é uma referência ao objeto atual que o método ou construtor está sendo chamado. Com o "this" podemos nos referir a membros do objeto atual dentro de um método ou construtor, e também chamar um construtor.
Vou mostrar aqui um exemplo do uso do "this.saca". Na classe "Conta" temos o método "saca" e "transfere". Observe que o "transfere" possui o "this.saca":
public abstract class Conta {
public void saca(double valor) throws SaldoInsuficienteException{
if(this.saldo < valor) {
throw new SaldoInsuficienteException("Saldo: " + this.saldo + ", Valor: " + valor);
}
this.saldo -= valor;
}
public void transfere(double valor, Conta destino) throws SaldoInsuficienteException{
this.saca(valor);
destino.deposita(valor);
}
}
Na classe "ContaCorrente" herdamos a classe "Conta" e sobrescrevemos o método "saca". Foi sobrescrito pois queremos que cada saque tenha uma pequena taxa:
public class ContaCorrente extends Conta {
...
@Override
public void saca(double valor) {
double valorASacar = valor + 0.2;
super.saca(valorASacar);
}
...
}
Main:
public static void main(String[] args) throws SaldoInsuficienteException {
ContaCorrente patricia = new ContaCorrente(123,111);
ContaCorrente eduardo = new ContaCorrente(1122,1166);
patricia.deposita(500.0);
patricia.transfere(100.0,eduardo);
}
Ao chamar o método "transfere" (patricia.transfere(50.0,eduardo)) ele vai utilizar o método "saca" específico da classe "ContaCorrente" que foi sobrescrito, pois o "this" está se referenciando ao objeto "patricia". Na classe "Conta" o método "transfere" utiliza o "this.saca", ou seja, será chamado o método "saca" específico do objeto que a referência "this" está apontando, que nesse caso é a "patricia", referência de um objeto ContaCorrente.
Como o método "saca" chamado foi o da "ContaCorrente", essa transferência que chama o saque terá um taxa, e o saldo atual será de 399.8.
Como vimos, pode sim usar o "this" juntamente com a chamada de métodos. Espero que tenha entendido, mas você verá isso com mais clareza no curso Java parte 3, onde o professor explica MUITO bem esses conceitos.