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.
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).
A
Askanin
É 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.
hugokotsubo
Se o método só existe na classe filha, então a classe mãe não tem como acessar.
publicclassMae{// etc...}publicclassFilhaextendsMae{// esse método não existe na classe Mae, só aqui na FilhapublicvoidmetodoQueSoExisteNaFilha(){// etc...}}Filhaf=newFilha();f.metodoQueSoExisteNaFilha();// ok, método existe na classe filhaMaem=newMae();// ERRO! Pois "metodoQueSoExisteNaFilha" só existe na classe filham..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
Askanin
A ideia seria mais ou menos essa. Eu queria saber se é possível e como eu poderia chamar aquela informação específica.
publicclassContaPagarextendsConta{Fornecedorfornecedor;publicFornecedorgetFornecedor(){returnthis.fornecedor;}publicvoidsetFornecedor(Fornecedorfornecedor){this.fornecedor=fornecedor;}}publicclassConta{//etc... variáveis como descricao, valor... e seus getters e settersSystem.out.println("A conta "+this.getDescricao()+" do Fornecedor "+???...)}
hugokotsubo
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.
A
Askanin
Consegui entender Hugo.
Vlw
hugokotsubo
Aliás, viu como é melhor e mais rápido quando tem código?