Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao compilar (Herança e polimorfismo)

Ao compilar o código abaixo recebo o seguinte erro:

TesteConta.java:81: error: constructor ContaCorrente in class ContaCorrente cannot be applied to given types;

Conta cc = new ContaCorrente (c2,5812444,200.1,0.2); ^

required: no arguments

found: Cliente,int,double,double

reason: actual and formal argument lists differ in length

1 error

Só irá compilar se comentar a linha :

Conta cc = new ContaCorrente (c2,5812444,200.1,0.2);

Gostaria de entender porque isto está ocorrendo e como posso resolver.

OBS.: Basta copiar o código para realizar o teste.

class Cliente {
    private String nome;
    private String rg;
    private String cpf;
    private String dataNascimemto;

    public Cliente (String nome, String rg, String cpf, String dataNascimemto) {
        this.nome = nome;
        this.rg = rg;
        this.cpf = cpf;
        this.dataNascimemto = dataNascimemto;

    }

    public String getNomeCliente (){
        return this.nome;
    }    

    //...
}

class Conta {
    private Cliente titular;
    private int numero;
    protected double saldo;
    private double limite;
    //...

    public Conta(Cliente titular,int numero, double limite, double saldoInicial){
        this.titular = titular;
        this.numero = numero;
        this.limite = limite;
        this.saldo = saldoInicial;
    }

    public Conta(){

    }    

    public void getDadosConta(){
        System.out.println ("Cliente: "+ this.titular.getNomeCliente() +
                            "\nNumero da Conta: " + this.numero  +
                            "\nSaldo Atual: R$" + this.saldo +
                             "\nLimite: R$" + this.limite);

    }      

    //...
}

class ContaCorrente extends Conta {

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

    }

}

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

}

class TesteConta {
    public static void main (String [] args) {

        Cliente c1 = new Cliente("joao", "123456","12345678912", "01/12/2016");

        Conta c = new Conta (c1,5812244,100.1,0.1);

        Cliente c2 = new Cliente ("jose", "123455","12345678912", "02/12/2016");

        Conta cc = new ContaCorrente (c2,5812444,200.1,0.2);        

        c.getDadosConta();
        //...
    }
}
1 resposta
solução!

Obtive a resposta através do Eclipse. Pelo que entendi é necessário também criar construtores nas subclasses e chamar as variáveis da classe mãe através do super. Se alguém puder explicar melhor agradeço.

    public ContaCorrente (Cliente titular,int numero, double limite, double saldoInicial){
        super (titular, numero, limite,saldoInicial);

    }

    public ContaPoupanca (Cliente titular,int numero, double limite, double saldoInicial){
        super (titular, numero, limite,saldoInicial);

    }