Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida com código

Olá a todos. Estou com um problema no meu código. Tenho uma interface que serve de implementação de acesso. A classe ContaCorrente implementa essa interface, mas quando preciso chamar o método de acesso, ele não aprece nos métodos possível para eu efetuar a chamada.

Coloco aqui os códigos e desde já agradeço.

Código principal

package aplicacao;

import entidades.Cliente;

public class Programa {

    public static void main(String[] args) {
        Cliente cliente = new Cliente(555,"Joaquim","123123");

        cliente.getContaCorrente().???;
    }

}

Código do Cliente

package entidades;

import util.Conta;
import util.ContaCorrente;
import util.ContaPoupanca;

public class Cliente{
    private int id;
    private String nome;
    Conta cc,cp;


    public Cliente(int id, String nome,String senha) {
        cc = new ContaCorrente(senha);
        cp = new ContaPoupanca(senha);
        this.nome = nome;
        this.id = id;
    }

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

    public int getId() {
        return this.id;
    }

    public Conta getContaCorrente() {
        return cc;
    }

    public Conta getContaPoupanca() {
        return cp;
    }

}

Código da interface

public interface Acesso {

    boolean autentica(String senha); 
}

Código da Classe que implementa as interfaces

public class ContaCorrente implements Conta, Acesso {
    private double saldo;
    private String senha;


    public ContaCorrente(String senha) {
        this.senha = senha;
    }

    @Override
    public boolean saque(double valor) {
        if(this.saldo < valor) {
            System.out.print("Não foi possível efetuar o saque, saldo insuficiente!");
            return false;
        }
        this.saldo -= valor;
        return true;
    }

    @Override
    public double deposito(double valor) {
        this.saldo += valor;
        return 0;
    }

    @Override
    public double getSaldo() {
        return this.saldo;
    }

    @Override
    public boolean autentica(String senha) {
        if(this.senha != senha) {
            System.out.print("Senha inválida!");
            return false;
        }
        return true;
    }

}
4 respostas

Por favor, disponibilize também a classe entidades.Cliente.

Como seu problema está nesta classe, não consigo lhe ajudar sem ver a implementação dela.

Inseri a classe Clientes.

solução!

Entendi.

Pelo que vi você definiu na sua classe duas variáveis do tipo :

Conta cc,cp;

Pelo que entendi, a classe Conta é uma interface, estou correto? Se for, você não deveria conseguir instanciá-la assim:

cc = new ContaCorrente(senha);

cp = new ContaPoupanca(senha);

Você só pode instanciar classe, não interface. Então, acredito que se você fizer da seguinte forma:

ContaCorrente cc;

ContaPoupanca cp;

E continuar no seu método retornando um tipo Conta, deve funcionar, se meu entendimento estiver correto.

Muito obrigado, agora entendi.

Pelo fato de eu ter instanciado como Conta, ele não consegue enxergar o tipo Acesso que também o implementa. Obrigado.