Herança

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