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,
System.out.println(nome + ", Salário: " + salario + " " + cargo + ", Bonificação: " + comissao);
Eu poderia criar em todos os objetos, mas quero criar uma vez só.
abçs.
[code]class Funcionario {
String nome;
int idade;
double salario;
double valor;
String cargo;
void bonificacao (double comissao) {
comissao = salario * 0.5;
}
}
class Diretor extends Funcionario {
void bonificacao () {
valor = salario * 0.5 + 1000;
salario += valor;
}
}
class Seguranca extends Funcionario {
void bonificacao () {
valor = salario * 0.5;
salario += valor;
}
}
public class Teste {
public static void main (String[] args) {
Funcionario funcionario = new Funcionario();
funcionario.nome = "João";
funcionario.idade = 30;
funcionario.salario = 1500.0;
funcionario.cargo = "Funcionário";
funcionario.bonificacao(0);
Diretor diretor = new Diretor();
diretor.nome = "Pedro";
diretor.idade = 40;
diretor.salario = 5000.0;
diretor.cargo = "Diretor";
diretor.bonificacao(0);
Seguranca seguranca = new Seguranca();
seguranca.nome = "Joaquim";
seguranca.idade = 28;
seguranca.salario = 800.0;
seguranca.cargo = "Segurança";
seguranca.bonificacao(0);
}
}[/code]
coloca, na classe pai:
public String toString(){
return this.nome + ", Salário: " + this.salario + " " + this.cargo + ", Bonificação: " + this.comissao;
}
Depois faz
System.out.println(meuObjeto);
Vlw pela resposta, mas está imprimindo “Funcionario@ea2dfe”, alguém tem alguma alternativa???
abçs
ficou assim:
[code]class Funcionario {
String nome;
int idade;
double salario;
String cargo;
double comissao;
void bonificacao (double comissao) {
comissao = salario * 0.5;
}
public String Dados(){
return this.nome + ", Salário: " + this.salario + " " + this.cargo + ", Bonificação: " + this.comissao;
}
}
class Diretor extends Funcionario {
void bonificacao (double comissao) {
comissao = salario * 0.5 + 1000;
}
}
class Seguranca extends Funcionario {
void bonificacao (double comissao) {
comissao = salario * 0.5;
}
}
public class Teste1 {
public static void main (String[] args) {
Funcionario funcionario = new Funcionario();
funcionario.nome = "João";
funcionario.idade = 30;
funcionario.salario = 1500.0;
funcionario.cargo = "Funcionário";
funcionario.bonificacao(0);
funcionario.Dados();
System.out.println(funcionario);
Diretor diretor = new Diretor();
diretor.nome = "Pedro";
diretor.idade = 40;
diretor.salario = 5000.0;
diretor.cargo = "Diretor";
diretor.bonificacao(0);
Seguranca seguranca = new Seguranca();
seguranca.nome = "Joaquim";
seguranca.idade = 28;
seguranca.salario = 800.0;
seguranca.cargo = "Segurança";
seguranca.bonificacao(0);
}
}[/code]
Não seria…
[code]
public class Teste1 {
public static void main (String[] args) {
Funcionario funcionario = new Funcionario();
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 AQUI
Diretor diretor = new Diretor();
diretor.nome = "Pedro";
diretor.idade = 40;
diretor.salario = 5000.0;
diretor.cargo = "Diretor";
diretor.bonificacao(0);
Seguranca seguranca = new Seguranca();
seguranca.nome = "Joaquim";
seguranca.idade = 28;
seguranca.salario = 800.0;
seguranca.cargo = "Segurança";
seguranca.bonificacao(0);
}
}[/code]
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!
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.
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);
Equivale à:
System.out.println(funcionario.toString());
Se quiser manter o seu método dados faça:
System.out.println(funcionario.dados());
E, por favor, siga a convenção de nomes do Java. Nome de métodos começam com letras minúsculas, não maiúsculas.
Bom dia. Perfeito! Vlw a todos ai, ficou certinho…
abçs