Boa Tarde, Galera!
Estou voltando a estudar Java e estou tentando recordar de alguns assuntos, estou com essa situação.
class ExtratoTotal extends Contabank {
public ExtratoTotal(String agencia, String contacorrente, String usuario) {
super(agencia, contacorrente, usuario);
}
public String toString() {
return "A Conta" + this.usuario + " " + this.agencia + " / " + this.contacorrente + "POSSUI: R$" + balanco;
}
}
Quando Compila, sai isso dizendo:
java: unreachable statement
Onde estou errando, obrigado.
Qual a visibilidade das propriedades da classe Contabank
? Esse erro acontece em qual linha?
É estranho pra mim quando vejo uma classe como ExtratoTotal
herdar de Contabank
. Não consigo ver um extrato ser um tipo de conta.
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.
Vou colar aqui o Codigo da Classe Contabank.java como estou codando ! Acho que assim melhora , a visibilidade esta lá como protected !
package co.javabank.bank;
import javax.swing.*;
import java.lang.*;
public class Contabank {
private static final int MAX_LENGTH = 12;
protected String agencia;
protected String contacorrente;
protected String usuario;
private double balanco;
private LogResultado Logador;
public Contabank(String agencia, String contacorrente, String usuario) {
this.agencia = agencia;
this.contacorrente = contacorrente;
setName(usuario);
Logador = new LogResultado();
}
public void setName(String usuario) {
if (usuario.length() > MAX_LENGTH) {
this.usuario = usuario.substring(0, MAX_LENGTH);
} else {
this.usuario = usuario;
}
System.out.println(this.usuario);
}
public void depositar(double valor) {
balanco += valor;
Logador.SaidaLog("DEPOSITO - R$ " + valor + " Sua Conta agora e de R$" + balanco);
}
public boolean sacar(double valor) {
if (balanco < valor) {
Logador.SaidaLog("SAQUE - R$ " + valor + " Seu Saldo atual é de R$ " + balanco);
return false;
} else {
balanco -= valor;
Logador.SaidaLog("SAQUE - R$ " + valor + " Sua Conta agora é de R$ " + balanco);
return true;
}
class ExtratoTotal extends Contabank {
public ExtratoTotal(String agencia, String contacorrente, String usuario) {
super(agencia, contacorrente, usuario);
}
public String toString(){
return "A Conta" + this.usuario + " " + this.agencia + " / " + this.contacorrente + "POSSUI: R$" + balanco;
}
}
}
}
A classe ExtratoTotal
está dentro do método sacar
. 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
.
Beleza Hugo, vou tentar e volto aqui !
Valeu por ajudar !
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 !
class ExtratoTotal extends Contabank {
public ExtratoTotal(String agencia, String contacorrente, String usuario) {
super(agencia, contacorrente, usuario);
}
public String toString(){
return "A Conta" + this.usuario + " " + this.agencia + " / " + this.contacorrente + "POSSUI: R$" + balanco;
}
}
Melhor Solução !
public boolean sacar(double valor) {
if (balanco < valor) {
Logador.SaidaLog("SAQUE - R$ " + valor + " Seu Saldo atual é de R$ " + balanco);
return false;
} else {
balanco -= valor;
Logador.SaidaLog("SAQUE - R$ " + valor + " Sua Conta agora é de R$ " + balanco);
return true;
}
}
@Override
public String toString() {
return "A Conta" + this.usuario + " " + this.agencia + " / " + this.contacorrente + "POSSUI: R$" + balanco;
}
}
Isso ai ! ainda falta alguns detalhes aqui mas estou descobrindo !
O método toString
é da classe Object
, que todas as classes herdam de forma implícita.
https://docs.oracle.com/javase/10/docs/api/java/lang/Object.html
1 curtida
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:
public class ExtratoTotal {
public void mostrarExtrato(Contabank conta) {
System.out.printf("A conta %s %s / %s possui R$ %.2f\n", conta.getUsuario(), conta.getAgencia(), conta.getContaCorrente(), conta.getBalanco());
}
}
2 curtidas