Olá a todos…Estou dando sequência ao meu estudo em JAVA e estou em dúvida em um problema que envolve “herança” e “interface”. Implementei uma “Classe Conta” e a tornei abstrata. Depois, “extendi” duas subclasses, isto é, “Class ContaCorrente extends Conta” e “Class ContaPoupanca extends Conta”. Também criei uma “Interface” chamada “Tributavel”. Considerei somente a “ContaCorrente” tributável, ou seja, “Class ContaCorrente extends Conta implements Tributavel”. Por fim há a Classe “TestaConta” que executa a programação. A dúvida é a seguinte: " Eu fiz um polimorfismo na classe ‘TestaConta’ ( referência da Poupança) sem nenhum problema mas , ao tentar fazer o mesmo procedimento de polimorfismo na referencia da ‘ContaCorrente’, houve um erro na hora de chamar o método de ‘calculaTributos’ e o “Eclipse” me forçou(sugeriu) a realizar um ‘CAST’ para que eu pudesse realizar o calculo de tributos. Porque isso aconteceu??? A notação ’ Class ContaCorrente extends Conta implements Tributavel’ não quer dizer ’ A conta corrente ‘é uma’ conta e ‘assina’ Tributavel ??? Porque o polimorfismo não funcionou quando utilizei a interface ‘Tributavel’ ??? ". Alguém pode me ajudar ???
Abs :roll:
[code]abstract public class Conta {
private double saldo = 0;
void deposita(double valor) {
this.saldo = saldo + valor;
}
public double getSaldo() {
return this.saldo;
}
}[/code]
[code]public class ContaCorrente extends Conta implements Tributavel {
private double limite = 500; /* cheque -especial */
private double saldo = 0;
void deposita(double valor) { /*Método subscrito */
this.saldo = saldo + valor;
}
public double getSaldo() {
return this.saldo + this.limite;
}
public double calculaTributos(){
return this.saldo * 0.01;
}
}[/code]
[code]public class ContaPoupanca extends Conta {
}
[/code]
[code]public class TestaConta {
public static void main(String[] args) {
Conta b = new ContaCorrente(); /* Polimorfismo */
Conta c = new ContaPoupanca();/* Polimorfismo */
b.deposita(1000);
c.deposita(200);
System.out.println("Minha Conta corrente com cheque-especial é :" + b.getSaldo());
System.out.println("Minha Conta poupança é : " + c.getSaldo());
System.out.println("O imposto ou tributo a ser descontado na da conta corrente é :" + ( ((ContaCorrente) b).calculaTributos()));
}
}
[/code]
[code]public interface Tributavel {
double calculaTributos();
}
[/code]