No exemplo realizado pelo professor, a classe sacar() perdeu seu uso na classe ContaCorrente.
Classe mãe Conta.js :
export class Conta { //Criando método construtor //declarando seus parâmetros constructor(saldoInicial, cliente, agencia) { //Iniciando as propriedades dentro do construtor //"saldo" significa que será privado (por convenção, não por definição) this.saldo = saldoInicial; this.cliente = cliente; this.agencia = agencia; }
set cliente(novoValor){
if(novoValor instanceof Cliente){
this._cliente = novoValor;
}
}
get cliente(){
return this._cliente;
}
get saldo(){
return this._saldo;
}
sacar(valor){
let taxa = 1;
return this._sacar(valor, taxa);
}
//Método privado
_sacar(valor, taxa) {
const valorSacado = taxa * valor;
if(this._saldo >= valorSacado){
this._saldo -= valorSacado;
return valorSacado;
}
return 0;
}
depositar(valor){
this._saldo += valor;
}
transferir(valor, conta){
const valorSacado = this.sacar(valor);
conta.depositar(valorSacado);
}
}
Classe filha ContaCorrente.js :
import { Conta } from "./Conta.js"; /* "extends" O JS por trás vai pegar tudo que está na classe conta e trazer pra cá, como se o código estivesse escrito aqui. / export class ContaCorrente extends Conta{ static numeroDeContas = 0; constructor(cliente, agencia) { //"super" palavra especial que chama o construtor da classe mãe a "conta.js para a classe filha a "ContaCorrente.js" //saldo, cliente, agencia / Sempre que a sua classe for uma subclasse (extende de outra classe), o construtor vai precisar executar o super(), e sempre que você quiser referenciar um método da classe-mãe, você pode acessar esses métodos via super. */ super(0, cliente, agencia); ContaCorrente.numeroDeContas += 1; }
//Sobreescrevendo o comportamento de sacar
sacar(valor) {
let taxa = 1.1;
/* Eu estou um método privado "_sacar" na classe ContaCorrente porque ele estaria condição de apenas
protegido, isto é, ele só pode ser usado por sua própria classe ou por alguma classe que esteja herdando
este método */
return this._sacar(valor, taxa);
}
}
A minha dúvida, se agora no método sacar(valor) da classe ContaCorrente.js está chamando apenas _sacar(valor,taxa) para que serve o método sacar(valor) da classe Conta.js?