Duvida para chamar método em Java

Bom dia pessoal,

estou com uma dúvida:

tenho duas classes Fruta e Laranja, na qual Laranja é classe filha de Fruta. Laranja tem uma variável Suco suco1 que vem de uma terceira classe Sucos que não herda nada de Frutas.
Na classe Laranja, eu declarei os getters e setters de suco1.

Agora eu gostaria de saber como eu posso chamar o método getSuco1( ) para classe Fruta.
pois quando eu faço algo do tipo "System.out.println(“O suco " + this.getSuco1( ) + " é bom.”), ele acusa que eu estou tentando fazer um método estático de um método não-estático.

Desde já agradeço pela ajuda…

Dica: em vez de descrever o código, é melhor colocar o próprio código aqui, assim a gente pode ver de fato o que está acontecendo (em vez de tentar imaginar e adivinhar).

1 curtida

É porque essa dúvida não é de um código especifico. Eu já esbarrei nesse problema várias vezes e ainda não consegui entender como eu posso chamar um getter de uma classe que filha para a classe mãe.

Se o método só existe na classe filha, então a classe mãe não tem como acessar.

public class Mae {
// etc...
}

public class Filha extends Mae {
    // esse método não existe na classe Mae, só aqui na Filha
    public void metodoQueSoExisteNaFilha() {
    // etc...
    }
}

Filha f = new Filha();
f.metodoQueSoExisteNaFilha(); // ok, método existe na classe filha

Mae m = new Mae();
// ERRO! Pois "metodoQueSoExisteNaFilha" só existe na classe filha
m..metodoQueSoExisteNaFilha();

Detalhe: é isso mesmo que você quer saber? Foi o que eu entendi da sua dúvida (se não foi, sugiro que coloque um código de exemplo explicando o que você quer fazer).

A ideia seria mais ou menos essa. Eu queria saber se é possível e como eu poderia chamar aquela informação específica.

public class ContaPagar extends Conta {
            Fornecedor fornecedor;
            public Fornecedor getFornecedor( ) {
                      return this.fornecedor;
             }
             public void setFornecedor(Fornecedor fornecedor) {
                       this.fornecedor =  fornecedor;
             }
}

public class Conta {
//etc... variáveis como descricao, valor... e seus getters e setters

           System.out.println("A conta " + this.getDescricao( ) + " do Fornecedor " + ??? ...)
}

Da forma que você fez não dá, pois o fornecedor só existe na classe filha, então a classe mãe não tem como saber…

Na verdade você precisa rever a modelagem. O fornecedor é uma informação da conta (de qualquer conta) ou só da conta a pagar?

Se for de qualquer conta, mova-o para Conta. Se for só de ContaPagar, não faz sentido tentar acessá-lo dentro de Conta.

Consegui entender Hugo.
Vlw :slight_smile:

Aliás, viu como é melhor e mais rápido quando tem código? :slight_smile: