Dúvida de Exercício [Dúvida já resolvida, Obrigado!]

3 respostas
glaucioaorj

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:

abstract public class Conta {

	private double saldo = 0;

	void deposita(double valor) {

		this.saldo = saldo + valor;

	}

	public double getSaldo() {

		return this.saldo;
	}

}
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;
	}
	
	

}
public class ContaPoupanca extends Conta {

}
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()));

	}

}
public interface Tributavel {
	
	double calculaTributos();

}

3 Respostas

andeb

Porque não é a classe Conta que possui o método calculaTributos(), é a classe ContaCorrente, então você só pode chamar o método calculaTributos() de uma variável de referência que possua esse método, se você fizesse o cast para Tributavel também funcionaria. :slight_smile:

glaucioaorj

Valeu!!! :smiley:

edmarr

Depois que seu problema tiver resolvido, vá no primeiro post, editar o Título adicionando a tag [RESOLVIDO] no final do Título .

Criado 23 de janeiro de 2010
Ultima resposta 25 de jan. de 2010
Respostas 3
Participantes 3