Salve! Então estou com um problema, tenho essas 3 classes, e quero fazer com que eu crie acredito que uma função na classe pai e q faça com que todas recebam. O que quero é imprimir todos os dados,
publicclassTeste1{publicstaticvoidmain(String[]args){Funcionariofuncionario=newFuncionario();funcionario.nome="João";funcionario.idade=30;funcionario.salario=1500.0;funcionario.cargo="Funcionário";funcionario.bonificacao(0);funcionario.Dados();System.out.println(funcionario.Dados());//O ERRO ESTA AQUIDiretordiretor=newDiretor();diretor.nome="Pedro";diretor.idade=40;diretor.salario=5000.0;diretor.cargo="Diretor";diretor.bonificacao(0);Segurancaseguranca=newSeguranca();seguranca.nome="Joaquim";seguranca.idade=28;seguranca.salario=800.0;seguranca.cargo="Segurança";seguranca.bonificacao(0);}}
Vc está passando o objeto para o sysout... com isso, ele chama o toString da classe, que ainda herda de object e escreve o nome da classe e o hashCode (acho eu) dela...
Se vc quer com que, só passando o seu objeto funcionario, o sysout imprima ele conforme vc pensou, reescreva o método toString!
Paulo_Silveira
coloque a invocacao do metodo Dados() dentro do System.out.println(). Simplesmente invoca-lo nao imprime nada, certo?
Mas o melhor é reescrever mesmo o metodo toString, em vez de criar seu proprio metodo.
ViniGodoy
A alternativa é fazer o que o colega te falou. Implementar o método toString(). O java, por padrão, chama o método toString quando vc manda imprimir um objeto sem especificar nenhum método. Ou seja: System.out.println(funcionario);