Qual a visibilidade das propriedades da classe Contabank? Esse erro acontece em qual linha?
É estranho pra mim quando vejo uma classe como ExtratoTotalherdar de Contabank. Não consigo ver um extrato ser um tipo de conta.
H
hugokotsubo
Geralmente o compilador informa a classe e a linha em que o erro ocorre, então comece olhando lá.
Dito isso, não tem como só esse trecho de código dar erro de unreachable statement. Provavelmente o problema está em outra parte do código.
J
JavaGoogle
Vou colar aqui o Codigo da Classe Contabank.java como estou codando ! Acho que assim melhora , a visibilidade esta lá como protected !
packageco.javabank.bank;importjavax.swing.*;importjava.lang.*;publicclassContabank{privatestaticfinalintMAX_LENGTH=12;protectedStringagencia;protectedStringcontacorrente;protectedStringusuario;privatedoublebalanco;privateLogResultadoLogador;publicContabank(Stringagencia,Stringcontacorrente,Stringusuario){this.agencia=agencia;this.contacorrente=contacorrente;setName(usuario);Logador=newLogResultado();}publicvoidsetName(Stringusuario){if(usuario.length()>MAX_LENGTH){this.usuario=usuario.substring(0,MAX_LENGTH);}else{this.usuario=usuario;}System.out.println(this.usuario);}publicvoiddepositar(doublevalor){balanco+=valor;Logador.SaidaLog("DEPOSITO - R$ "+valor+" Sua Conta agora e de R$"+balanco);}publicbooleansacar(doublevalor){if(balanco<valor){Logador.SaidaLog("SAQUE - R$ "+valor+" Seu Saldo atual é de R$ "+balanco);returnfalse;}else{balanco-=valor;Logador.SaidaLog("SAQUE - R$ "+valor+" Sua Conta agora é de R$ "+balanco);returntrue;}classExtratoTotalextendsContabank{publicExtratoTotal(Stringagencia,Stringcontacorrente,Stringusuario){super(agencia,contacorrente,usuario);}publicStringtoString(){return"A Conta"+this.usuario+" "+this.agencia+" / "+this.contacorrente+"POSSUI: R$"+balanco;}}}}
H
hugokotsubo
A classe ExtratoTotal está dentro do métodosacar. Por quê?
Enfim, é por isso que dá erro. Repare que antes tem um código que retorna algo (ele pode cair no if ou no else, mas em ambos os casos vai retornar algo, ou seja, vai sair do método e não vai executar mais nada do que vem depois).
Por isso a declaração da classe ExtratoTotal é um unreachable statement. É um ponto que nunca será executado, pois o método sempre retorna antes disso.
Tire a classe daí e coloque-a em um arquivo ExtratoTotal.java.
J
JavaGoogle
Beleza Hugo, vou tentar e volto aqui ! Valeu por ajudar !
J
JavaGoogle
Coloquei fiz o que você disse é compilou , mas ficou complexo o codigo, então fiz dessa forma e deu certo também. O que eu não entendia é que o String toString ele pode funcionar na propria classe sem extender você pode fazer uma sobrecarga na propria classe !
Sua sugestão !
publicbooleansacar(doublevalor){if(balanco<valor){Logador.SaidaLog("SAQUE - R$ "+valor+" Seu Saldo atual é de R$ "+balanco);returnfalse;}else{balanco-=valor;Logador.SaidaLog("SAQUE - R$ "+valor+" Sua Conta agora é de R$ "+balanco);returntrue;}}@OverridepublicStringtoString(){return"A Conta"+this.usuario+" "+this.agencia+" / "+this.contacorrente+"POSSUI: R$"+balanco;}}
Isso ai ! ainda falta alguns detalhes aqui mas estou descobrindo !
L
Lucas_Camara1 like
O método toString é da classe Object, que todas as classes herdam de forma implícita.
E só reiterando o que já foi dito acima, não faz sentido ExtratoTotal herdar de Contabank.
Um extrato não é uma conta. Um extrato é um conjunto de informações que você pode extrair de uma conta.
Então a classe Contabank poderia ter um método extrato (ou obterExtrato, getExtrato, informacoesExtrato, etc) que mostra as informações dela (e aí nem precisaria da outra classe).
Ou então a classe ExtratoTotal tem um método (mostrarExtrato, etc) que recebe uma conta e mostra as informações dela. Algo assim:
publicclassExtratoTotal{publicvoidmostrarExtrato(Contabankconta){System.out.printf("A conta %s %s / %s possui R$ %.2f\n",conta.getUsuario(),conta.getAgencia(),conta.getContaCorrente(),conta.getBalanco());}}