Problemas com herança

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.

Tirando o fato da classe ContaBancaria estar com o modificador faltando o p (deveria ser public e está ublic), não vejo outra razão para erro.

Qual o erro que está aparecendo no console?

Lí só o texto que vc escreveu o código ví por cima, não conseguí entender o que vc gostaria que acontecesse, ou se está ocorrendo erro.

Olá roskinha,

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?

Fallow

O que está acontecendo exatamente?

Em relação ao comentário do colega sobre o modificador, não ha problema já que ela esta usando o protected.

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

Acho que pode ser por causa da cedilha em Poupança! Acredito que este caractere não é válido para nomenclatura de classes!

Creio que nao, pois nao esta acusando nenhum erro, e a classe ContaCorrente esta com o mesmo problema

Qual o problema? Cola um pedaço do log que está acusando o erro, por favor!

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

O seu erro é que no final de cada if de tipo de conta vc manda exibir o saldo de contab e não o saldo da conta modificada.

experimente colocar para exibir o valor da conta adequada após a operação! :wink:

Tem certeza de que está funcionando conforme vc descreve? Baixei suas classes e o resultado que estou tendo é diferente.

Altere seu switch para este!

[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]

Vc pode tratar a seguinte exception:

Exception in thread "main" java.util.InputMismatchException

Obrigado a todos, agora estou com outro problema mais tentarei resolvedo (:

Pode postar aqui que a gente ajuda como puder! :wink: