Olá amigos, gpostaria de saber onde estou errando sobre polimorfismo, vou postar as minhas classes pq tem metodos que não consigo acessar de classes que são extendidas.
package mod7.prog;
/**
*
* @author Cléber Zancanaro
*/
public abstract class ContaBancaria {
private int numero;
private double saldo;
public ContaBancaria(int n) {
this.numero = n;
this.saldo = 0;
}
public abstract void deposita(double valor);
//retorna false caso haja insuficiência de fundos e true, em caso contrário
public abstract boolean retira(double valor);
public void setSaldo(double valor) {
this.saldo = valor;
}
public double getSaldo() {
return this.saldo;
}
public int getNumero() {
return this.numero;
}
public void mostraDados() {
System.out.println("Conta número: " + this.numero);
System.out.println("Saldo atual: R$ " + this.saldo);
}
}
package mod7.prog;
/**
*
* @author Cléber Zancanaro
*/
public class ContaCorrente extends ContaBancaria {
private double limite;
public ContaCorrente(int n) {
super(n);
this.limite = 0;
}
@Override
public void deposita(double valor) {
this.setSaldo(this.getSaldo() + valor);
}
@Override
public boolean retira(double valor) {
if (this.getSaldo() >= valor) {
this.setSaldo(this.getSaldo() - valor);
return true;
} else if (this.getSaldo() + this.getLimite() >= valor) {
this.setSaldo(this.getSaldo() - valor);
return true;
} else {
return false;
}
}
public double getLimite() {
return limite;
}
public void setLimite(double limite) {
this.limite = limite;
}
@Override
public void mostraDados() {
super.mostraDados();
System.out.println("Saldo Limite: R$ " + this.getLimite());
System.out.println("Saldo Disponível: R$ " + (this.getSaldo() + this.getLimite()));
}
}
package mod7.prog;
/**
*
* @author Cléber Zancanaro
*/
public class ContaPoupanca extends ContaBancaria {
private double juros;
public ContaPoupanca(int n) {
super(n);
}
@Override
public void deposita(double valor) {
this.setSaldo(this.getSaldo() + valor);
}
@Override
public boolean retira(double valor) {
if (this.getSaldo() >= valor) {
this.setSaldo(this.getSaldo() - valor);
return true;
} else {
return false;
}
}
public void aplicaJuros() {
this.setSaldo(((this.getSaldo() * this.getJuros()) / 100) + this.getSaldo());
}
@Override
public void mostraDados() {
super.mostraDados();
System.out.println("Taxa de juros: " + this.getJuros() + "% ao mês");
}
public double getJuros() {
return juros;
}
public void setJuros(double juros) {
this.juros = juros;
}
}
package mod7.prog;
/**
*
* @author Cléber Zancanaro
*/
public class Correntista {
private String nome;
private ContaBancaria contaBancaria[];
private int quantContas;
public Correntista(String nome) {
this.nome = nome;
quantContas = 0;
contaBancaria = new ContaBancaria[10];
}
public boolean abreConta(ContaBancaria cb) {
quantContas++;
if (quantContas - 1 < contaBancaria.length) {
contaBancaria[quantContas - 1] = cb;
System.out.println(quantContas);
return true;
}
return false;
}
public double somaSaldos() {
double saldo = 0;
for (int i = 0; i < quantContas; i++) {
saldo += contaBancaria[i].getSaldo();
}
return saldo;
}
public ContaBancaria contaDeMaiorSaldo() {
ContaBancaria maiorSaldo = contaBancaria[0];
for (int i = 0; i < quantContas; i++) {
if (contaBancaria[i].getSaldo() > maiorSaldo.getSaldo()) {
maiorSaldo = contaBancaria[i];
}
}
return maiorSaldo;
}
public ContaBancaria[] ordenaContas() {
ContaBancaria conta = null;
int indice;
for (int i = 0; i < quantContas; i++) {
indice = i;
for (int j = i + 1; j < quantContas; j++) {
if (contaBancaria[j].getSaldo() < contaBancaria[indice].getSaldo()) {
indice = j;
}
}
if (indice != i) {
conta = contaBancaria[indice];
contaBancaria[indice] = contaBancaria[i];
contaBancaria[i] = conta;
}
}
return contaBancaria;
}
public boolean pesquisa(int valor) {
for (int i = 0; i < quantContas; i++) {
if (contaBancaria[i].getNumero() == valor) {
return true;
}
}
return false;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getQuantContas() {
return quantContas;
}
public ContaBancaria[] getContaBancaria() {
return contaBancaria;
}
}
package mod7.prog;
/**
*
* @author Cleber Zancanaro
*/
public class SistemaBancario {
static Correntista c;
static Teclado t = new Teclado();
static int opc = 0;
public static void main(String[] args) {
telaAbertura();
c = new Correntista(t.leString());
do {
opc = menuPrincipal();
switch (opc) {
case 1: // poupanca
int opc1 = t.leInt();
do {
switch (opc1) {
case 1: // abre conta
if (c.abreConta(c.getQuantContas())) {
System.out.println("A Conta foi aberta com sucesso!");
} else {
System.out.println("A Conta não pode ser aberta, limite máximo de contas excedido!");
}
break;
case 2: // deposita
if (c.getContaBancaria(). = null) {
System.out.println("Você deve pesquisar uma conta antes de depositar");
} else {
System.out.println("Digite o valor do depósito:");
c.deposita();
}
break;
case 3: // saca
break;
case 4: // saldo
break;
case 5: // altera juros
System.out.println("Digite a taxa de juros:");
cp.setJuros(t.leDouble());
break;
case 6: // exibe juros
break;
case 7: // aplica juros
break;
case 8: // exibe dados
break;
case 0:
break;
default:
System.out.println("Opcao Invalida!");
break;
}
} while (opc1 != 0);
break;
case 2: // corrente
break;
case 3: // soma saldos
break;
case 4: // maior saldo
break;
case 5: // ordena contas
break;
case 6: // exibe correntista
break;
case 0:
System.out.println("Tchau!");
break;
default:
System.out.println("Opcao Invalida!");
break;
}
} while (opc != 0);
}
public static int menuPrincipal() {
System.out.println("------------------MENU PRINCIPAL-----------------");
System.out.println("1 - Conta Poupanca");
System.out.println("2 - Conta Corrente");
System.out.println("3 - Soma saldo das contas");
System.out.println("4 - Exibe conta com maior saldo");
System.out.println("5 - Ordena contas em order crescente");
System.out.println("6 - Exibe nome do correntista");
System.out.println("0 - Sair");
System.out.println("-------------DIGITE A OPCAO DESEJADA----------");
return t.leInt();
}
public static int menuPoupanca() {
System.out.println("--------------MENU CONTA POUPANCA----------------");
System.out.println("1 - Abertura de Contas");
System.out.println("2 - Deposito");
System.out.println("3 - Saque");
System.out.println("4 - Saldo");
System.out.println("5 - Altera taxa Juros");
System.out.println("6 - Exibe taxa Juros");
System.out.println("7 - Aplicar Juros");
System.out.println("8 - Mostra dados da conta");
System.out.println("0 - Voltar ao menu anterior");
System.out.println("-------------DIGITE A OPCAO DESEJADA----------");
return t.leInt();
}
public static int menuCorrente() {
System.out.println("--------------MENU CONTA CORRENTE----------------");
System.out.println("1 - Abertura de Contas");
System.out.println("2 - Deposito");
System.out.println("3 - Saque");
System.out.println("4 - Saldo");
System.out.println("5 - Altera Limite de credito");
System.out.println("6 - Exibir Limite de credito");
System.out.println("7 - Mostra dados da conta");
System.out.println("0 - Voltar ao menu anterior");
System.out.println("-------------DIGITE A OPCAO DESEJADA----------");
return t.leInt();
}
public static void telaAbertura() {
System.out.println("---------SISBANK - Seja bem vindo!---------------");
System.out.println("Insira o nome do correntista:");
}
}