Herança e Polimorfismo!

6 respostas
A

Ajuda do Capitulo 7.7 Caelum!!!

ta dando erro na classe main, no c.deposita cc.deposita

A Main

public class Main {

  
    public static void main(String[] args) {
           AtualizadorDeContas teste = new AtualizadorDeContas(0.01);  
          
        Conta c = new Conta();  
        ContaCorrente cc = new ContaCorrente();  
        ContaPoupanca cp = new ContaPoupanca();  
          
        c.deposita(1000);  
        cc.deposita(1000);  
        cp.deposita(1000);  
          
        teste.roda(c);  
        teste.roda(cc);  
        teste.roda(cp);  
          
        System.out.println("Saldo Total: " + teste.getSaldoTotal());  
          
    }  
  
}

a conta corrente

public class ContaCorrente extends Conta {
    
      
   
        public void atualiza(double taxa)  
        {  
            this.saldo *= (2 * taxa);  
        }  
          
        public void deposita(double valor)  
        {  
            this.saldo += valor * 0.000;  
        }  
}
--------------------

conta poupança

public class ContaPoupanca extends Conta {
   void atualiza (double taxa){
       this.saldo += this.saldo * taxa * 3;
   } 
    
}
---------------------------- a conta
public class Conta {  
        protected double saldo;  
          
        public void deposita (double valor)  
        {  
            this.saldo += valor;  
        }  
          
        public void saca (double valor)  
        {  
            if (valor < saldo)  
            {  
                System.out.printf("Você sacou %d", valor);  
                this.saldo -= valor;  
            }  
              
            else  
                System.out.println("Você não possui saldo suficiente.");  
        }  
          
        public double getSaldo()  
        {  
            return this.saldo;  
        }  
          
        public void atualiza (double taxa)  
        {  
            this.saldo = this.saldo * taxa;  
        }  
      }
}
-------------------------------------------------

o atualizador....

public class AtualizadorDeContas {
      
        private static double saldoTotal = 0;  
        private double selic;  
          
        AtualizadorDeContas(double selic)  
        {  
            this.selic = selic;  
        }  
          
        public void roda(Conta c)  
        {  
            //saldo anterior  
            System.out.println(c.getSaldo());  
      
            //atualiza conta  
            c.atualiza(0.01);  
              
            //saldo final  
            System.out.println(c.getSaldo());  
              
            this.saldoTotal += c.getSaldo();   
        }  
          
        public double getSaldoTotal ()  
        {  
            return this.saldoTotal;  
        }  
      
    }
--------------------------- esta dando erro no cc.deposita,c.deposita e cp.deposita!!!

6 Respostas

Andre_Brito

Primeiramente, coloque seu código entre as tags .
Que erro que está ocorrendo?

romarcio

Leia aqui como fazer: http://www.guj.com.br/java/50115-vocnovo-no-guj-vai-criar-um-tico-e-colar-seu-cigo-fonte-leia-aqui-antes-por-favor

Daniel_Girotto

Boa Noite
Testei o teu código e encontrei dois erros, um na linha 30 da classe conta (uma chave sobrando) e na linha 02 da conta poupança (faltou o public para sobrescrever o método). Não testei a lógica apenas a sintaxe.
Erro:
[size=12]atualiza(double) in ContaPoupanca cannot override atualiza(double) in Conta; attempting to assign weaker access privileges; was public[/size]

R

Boa noite,

Eu também testei o código e realmente faltou colocar o public no método atualiza da classe ContaPoupanca.

Obs.: Se tiver alguma classe com um x em vermelho emcima, significa que a mesma está com erro de sintaxe, entre outros, você entra na classe e lá do lado direito da tela do lado da barra de rolagem fica um quadrado vermelho é só clica nele que você vai direto pro erro.


williamdasflores

Cara na sua classe ContaPoupanca no metodo atualiza fico faltando o modificador de acesso public

public void atualiza(double taxa)
{
   this.saldo += this.saldo * taxa * 3;
}

Agora como nosso amigo Daniel Girotto falou, também não estou esse erro que você mencionou.

discorpio

Bom dia a todos.

Alguns comentários sobre herança:

O método abaixo da Conta Corrente:

// Método da classe Conta Corrente que herda (extende) de Conta (Sub classe)
 public void deposita(double valor)    
 {    
       this.saldo += valor * 0.000;    
 }

 // Sobrescreve  o método da classe Conta (Super Classe)
 public void deposita (double valor)    
 {    
      this.saldo += valor;    
 }

Repare que os dois métodos tem a mesma assinatura, assim sendo há a sobrescrita do método que tem quase a mesma implementação, neste caso, o ideal seria implementá-lo na classe Conta Corrente desta forma:

public void deposita (double valor)    
 {    
      super.deposita(valor * 0.000);     
 }

 // Considerando que em operação matemática, todo número multiplicado por 0 (zero) é igual 0 (zero), então seria mais lógico implementar assim:

 public void deposita (double valor)    
 {    
      super.deposita(0.000);     
 }

Sinceramente não entendi esse método deposita em Conta Corrente, pois como foi dito acima, a multiplicação por zero, implica em não fazer depósito nenhum, assim sendo o saldo fica inalterado, tornando nula a ação do método deposita

Criado 27 de maio de 2011
Ultima resposta 28 de mai. de 2011
Respostas 6
Participantes 7