Bom dia pessoal, meu problema consiste em que minha variavel, criada na classe Mae, e que esta sendo usada na classe filha e foi implementada nos metodos da classe filha, nao estao ocorrendo, nao consigo achar meu erro, irei postar as 2 classes (mae e filha)
[code] import java.util.*;
public class ContaBancaria {
int agencia,nro;
Date abertura;
protected double saldo;
void creditar(double valor){//soma o valor passado ao saldo
saldo+=valor;
}
void debitar(double valor){
saldo=saldo-valor;
}
void aplicarRendimentos(double juros){
saldo=((juros/100)*saldo)+saldo;
}
double obterSaldo(){//retorna o saldo na conta, ou da conta poupança ou da conta corrente;
return saldo;
}
}
[/code]
public class ContaPoupança extends ContaBancaria {
int aniversario;
public void debitar(double valor){
if(valor>saldo){
saldo=-1;
}else
saldo=saldo-valor;
}
public void aplicarRendimentos(double juros){
saldo=((juros/100)*saldo)+saldo;
}
}
Se nao houver nada de errado, posso postar minha main, mais creio que o problema nao esteja nela.
Qual a localização das classes em relação aos packages…
estão no mesmo pacote, estão em pacotes diferentes…
e Qual exatamante é o erro que ocorre? uma exception, o valor do saldo não bate com o teste real?..o que ocorre?
Já verificou o escopo da variavel na sua classe main?
O “ublic” nao era o problema, haha esqueci na hora de postar aki !
Entao ja fiz a maioria das verificaçoes, irei postar minha main
[code]import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
ContaBancaria contab = new ContaBancaria();
ContaPoupança contap = new ContaPoupança();
ContaCorrente contac = new ContaCorrente();
int opcP=0,juros=0;
double debit=0,credit=0;
do{
System.out.println(“Digite sua agencia”);
contab.agencia=entrada.nextInt();
}while(contab.agencia<1000 || contab.agencia>9999);
do{
System.out.println(“Digite seu saldo atual”);
contab.saldo=entrada.nextDouble();
}while(contab.saldo<=0);
System.out.println("Sua agencia é "+contab.agencia+" Seu saldo inicial é "+contab.obterSaldo());
int opc;
do{
System.out.println("Digite 1-ContaPoupança,2-ContaCorrente,3-ContaBancaria");
opc=entrada.nextInt();
}while(opc!=1 && opc!=2 && opc!=3);
switch (opc){
case 1:
do{
System.out.println("Digite 1-debitar,2-Aplicar rendimentos");
opcP=entrada.nextInt();
}while(opcP!=1 && opcP!=2);
if(opcP==1){
System.out.println("Digite quanto deseja debitar");
debit=entrada.nextDouble();
contap.debitar(debit);
}else{
System.out.println("Digite quanto de juros sera aplicado");
juros=entrada.nextInt();
contap.aplicarRendimentos(juros);
}
System.out.println("O seu saldo atual é "+contab.obterSaldo());
break;
case 2:
do{
System.out.println("Digite 1-debitar,2-Aplicar rendimentos");
opcP=entrada.nextInt();
}while(opcP!=1 && opcP!=2);
if(opcP==1){
System.out.println("Digite quanto deseja debitar");
debit=entrada.nextDouble();
contac.debitar(debit);
}else{
System.out.println("Digite quanto de juros sera aplicado");
juros=entrada.nextInt();
contac.aplicarRendimentos(juros);
}
System.out.println("O seu saldo atual é "+contab.obterSaldo());
break;
case 3:
do{
System.out.println("Digite 1-debitar,2-Aplicar rendimentos,3-creditar");
opcP=entrada.nextInt();
}while(opcP!=1 && opcP!=2 && opc!=3);
if(opcP==1){
System.out.println("Digite quanto deseja debitar");
debit=entrada.nextDouble();
contab.debitar(debit);
}if(opcP==2){
System.out.println("Digite quanto de juros sera aplicado");
juros=entrada.nextInt();
contab.aplicarRendimentos(juros);
}if(opcP==3){
System.out.println("Digite quando deseja creditar");
credit=entrada.nextDouble();
contab.creditar(credit);
}
System.out.println("O seu saldo atual é "+contab.obterSaldo());
break;
}
}
}
[/code]
Quando utilizo a classe ContaBancaria(mae) tudo ocorre como desejado, mais quando vou usar as classes filhas que esta ocorrendo o problema, acho que estou esquecendo algum conceito sobre herança
Digite sua agencia
1234
Digite seu saldo atual
1000
Sua agencia é 1234 Seu saldo inicial é 1000.0
Digite 1-ContaPoupança,2-ContaCorrente,3-ContaBancaria
2
Digite 1-debitar,2-Aplicar rendimentos
1
Digite quanto deseja debitar
300
O seu saldo atual é 1000.0 // aqui deveria aparecer o saldo modificado pois escolhi debitar e declarei o valor
[code]switch (opc){
case 1:
do{
System.out.println(“Digite 1-debitar,2-Aplicar rendimentos”);
opcP=entrada.nextInt();
}while(opcP!=1 && opcP!=2);
if(opcP==1){
System.out.println(“Digite quanto deseja debitar”);
debit=entrada.nextDouble();
contap.debitar(debit);
}else{
System.out.println(“Digite quanto de juros sera aplicado”);
juros=entrada.nextInt();
contap.aplicarRendimentos(juros);
}
System.out.println("O seu saldo atual é "+contap.obterSaldo());
break;
case 2:
do{
System.out.println(“Digite 1-debitar,2-Aplicar rendimentos”);
opcP=entrada.nextInt();
}while(opcP!=1 && opcP!=2);
if(opcP==1){
System.out.println(“Digite quanto deseja debitar”);
debit=entrada.nextDouble();
contac.debitar(debit);
}else{
System.out.println(“Digite quanto de juros sera aplicado”);
juros=entrada.nextInt();
contac.aplicarRendimentos(juros);
}
System.out.println("O seu saldo atual é "+contac.obterSaldo());
break;
case 3:
do{
System.out.println(“Digite 1-debitar,2-Aplicar rendimentos,3-creditar”);
opcP=entrada.nextInt();
}while(opcP!=1 && opcP!=2 && opc!=3);
if(opcP==1){
System.out.println(“Digite quanto deseja debitar”);
debit=entrada.nextDouble();
contab.debitar(debit);
}if(opcP==2){
System.out.println(“Digite quanto de juros sera aplicado”);
juros=entrada.nextInt();
contab.aplicarRendimentos(juros);
}if(opcP==3){
System.out.println(“Digite quando deseja creditar”);
credit=entrada.nextDouble();
contab.creditar(credit);
}
System.out.println("O seu saldo atual é "+contab.obterSaldo());
break;
} [/code]