3
respostas

Não consigo chamar o metodo

Estou criando um sistema de um restaurante para testar meus conhecimentos, onde dentro do projeto existem as classes: mesas, caixa, cardápio e sistema(metodo main), mas dentro da classe mesas, ao tentar pagar a conta, não consigo chamar o metodo do caixa para somar o valor da conta ao valor total do caixa do restaurante


public class Mesas {

    private int quantidadepessoas;
    private double conta;

    public Mesas() {
        Caixa caixa = new Caixa();
    }

    public void pagarconta() {
        caixa.receber();    //problema esta aqui
        this.setConta(0);
        this.setQuantidadepessoas(0);
    }

    public int getQuantidadepessoas() {
        return quantidadepessoas;
    }

    public void setQuantidadepessoas(int quantidadepessoas) {
        this.quantidadepessoas = quantidadepessoas;
    }

    public double getConta() {
        return conta;
    }

    public void setConta(double conta) {
        this.conta = conta;
    }

}

public class Caixa {
    private static double total;

    public void receber() {
        System.out.println("Teste");
    }
}

já tentei fazer private Caixa caixa; mas também não funciona

3 respostas

Oi Vanessa, olhando seu código, vc está instanciando o caixa apenas quando vc chama o construtor da mesa.

Eu acho que o erro está na variavel caixa , que do jeito que vc está fazendo a mesa não tem acesso a essa variavel, tente algo assim.

public class Mesas {

    private int quantidadepessoas;
    private double conta;
    private Caixa caixa = new Caixa();    

implementando dessa forma acredito para de gerar o erro na sua classe

não se chama o construtor, ele inicia assim que o objeto é instanciado, então oq você fez ai acaba dando no mesmo

Por isso que estou falando, vc está chamando uma variavel que vc não tem acesso no memento a ela, por isso que ta dando esse erro.

O erro quer dizer que nao está encontrado essa variavel caixa, por que vc so declarou a instanciação do objeto na hora do construtor, sendo assim vc nao tem acesso a variavel.

Aquela forma que eu passei, é uma forma de resolver esse problema, mais também temos essa opção.

public class Mesas {

    private int quantidadepessoas;
    private double conta;
    private Caixa caixa;

 public Mesas(Caixa caixa) {
        this.caixa = caixa;
    }    

agora sua classe Mesas tem acesso ao objeto caixa, Só lembre que quando instanciar a sua mesa, passar o caixa no paremetro.