Boa tarde, gostaria para saber como eu faria para utilizar o super para chamar o metodo atualiza na super classe, assim nao preciso ficar digitar ele em todas as classes e assim so alterar apos achamada.
valeu
package Heranca;
/**
*
* @author r094565
*/
public class Conta {
protected double saldo;
public double getSaldo(){
return this.saldo;
}
public void deposita(double valor){
this.saldo+=valor;
}
public void saca(double valor){
this.saldo-=valor;
}
public void atualiza(double taxa){
this.saldo=(this.saldo* taxa) ;
}
}
package Heranca;
/**
*
* @author r094565
*/
public class ContaPoupanca extends Conta {
@Override
public void atualiza(double taxa) {
this.saldo = (this.saldo * taxa * 3);
}
}
vc perguntou como chamar o super, se chama da maneira como eu te passei.
agora como multiplicar por esse valor faz parte da sua solução, da sua lógica. Vc teria de explicar oq siginifica esse número para podermos ajudar. Uma solução inicial seria colocar mais um parâmetro do tipo int pra ser o multiplicador no método da superclasse. Outra seria passar a taxa já multiplicada (caso isso faça sentido pra sua solução, claro, como já disse não foi explicado oq este numero significa).
@Override
public void atualiza(double taxa) {
super.atualiza(taxa*2);
}
(tente entender pq…)
a questão é: é a melhor forma de fazer? só vc pode responder, depende da sua finalidade. Vc está passando uma TAXA pro método da superclasse… essa multiplicação por 2 faz parte de TAXA? (Veja, estamos falando de qualidade… se vai funcionar, sim, vai)
creio q não. Me parece mais dúvida com relação a herança mesmo.
Eu sempre coloquei o conceito de overloading e overriding no mesmo pacote, isto é, polimorfismo.
Entretanto percebi que o Page-Jones faz uma sutil diferenciação, definindo como parte do polimorfismo apenas o overriding, chegando a construir uma frase dessa forma: “Both polymorphism and overloading…” pag 42. (Fundamentals of Object-Oriented Design in UML).