Olá, estou tentando atribuir um objeto de uma sub-classe a uma variável do tipo interface, de acordo com o sugerido no exercício 2 de interfaces do curso de java, o Eclipse sugere que eu implemente a classe mãe a interface, porem com isso meus metodos da interface serão todos obrigatórios inclusive para as classes que não são implementadas pela interface. Será que eu estou equivocando em algum ponto do meu codigo? algem poderia dar uma revisada no meu codigo?
Classe Mãe:
abstract class Conta {
protected double saldo;
public void deposita(double valor) {
this.saldo = this.saldo + valor;
}
public double getSaldo() {
return this.saldo;
}
abstract void atualiza(double taxa);
public void saca(double valor) {
if (this.saldo > valor) {
this.saldo = this.saldo - valor;
} else {
System.out.println("Saldo Insuficiente");
}
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
}
Sub Classe
public class ContaCorrente extends Conta implements Tributavel {
@Override
void atualiza(double taxa) {
this.saldo += this.saldo * taxa * 2;
}
@Override
public double calculaTributo() {
return this.saldo * 0.1;
}
}
Sub Classe
public class ContaPoupanca extends Conta {
public void atualiza(double taxa) {
this.saldo += this.saldo * taxa * 3;
}
public void deposita(double valor) {
this.saldo += valor - 0.10;
}
@Override
public double calculaTributo() {
// TODO Auto-generated method stub
return 0;
}
}
Interface:
public interface Tributavel {
double calculaTributo();
}
Classe de teste
public class Principal {
public static void main(String[] args) {
Conta cc = new ContaCorrente();
Conta cp = new ContaPoupanca();
Tributavel t = cc;
AtualizadorDeContas pedro = new AtualizadorDeContas(0.01);
cc.deposita(1000.0);
cp.deposita(1000.0);
System.out.println("Geral");
pedro.roda(cc);
System.out.println("Conta Corrente");
pedro.roda(cp);
System.out.println("Conta Poupança");
System.out.println("Saldo Total : R$" + pedro.getSaldoTotal());
System.out.println("Tributos: " + t.calculaTributo());
}
}
O erro acontece na linha:
Tributavel t = cc;