Criei a classe Funcionario, conforme código a seguir.
package empresa;
public class Funcionario { private String nome; private String cpf; private double salario;
public void cadastrarFuncionario(String nome, String cpf, double salario) {
this.setNome(nome);
this.setCpf(cpf);
this.setSalario(salario);
}
public double getBonificacao(double percentual) {
return this.salario * percentual / 100;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
Na classe Funcionario foi definido o método cadastrarFuncionario, com o objetivo de passar as informações como parâmetro e o método realizar todo processo de definição dos valores dos atributos.
Este é o código da classe testeFuncionario:
package empresa;
public class testeFuncionario {
public static void main(String[] args) {
Funcionario funcionario;
String funcionarioNome;
String funcionarioCpf;
double funcionarioSalario;
int percentualBonificacao;
funcionarioNome = "João da Silva";
funcionarioCpf = "111.111.111-11";
funcionarioSalario = 8000;
funcionario = new Funcionario();
funcionario.cadastrarFuncionario(funcionarioNome, funcionarioCpf, funcionarioSalario);
percentualBonificacao = 10;
System.out.println("Funcionário " + funcionario.getNome());
System.out.println("CPF " + funcionario.getCpf());
System.out.println("Salário R$ " + funcionario.getSalario());
System.out.println("Bonificação de R$ " + funcionario.getBonificacao(percentualBonificacao));
System.out.println();
}
}
Nesta classe eu utilizei dois comandos, um para criar o objeto Funcionario e outro para inicializar os atributos:
funcionario = new Funcionario();
funcionario.cadastrarFuncionario(funcionarioNome, funcionarioCpf, funcionarioSalario);
Eu quero colocar o comando "new" dentro do método.
public Funcionario cadastrarFuncionario(String nome, String cpf, double salario) {
Funcionario funcionario = new Funcionario();
funcionario.setNome(nome);
funcionario.setCpf(cpf);
funcionario.setSalario(salario);
return funcionario;
}
Se tento executar o método testeFuncionario, dá erro que a variável "funcionario" não foi inicializada.
funcionarioNome = "João da Silva";
funcionarioCpf = "111.111.111-11";
funcionarioSalario = 8000;
// funcionario = new Funcionario();
funcionario.cadastrarFuncionario(funcionarioNome, funcionarioCpf, funcionarioSalario);
Exception in thread "main" java.lang.Error: Unresolved compilation problems: The local variable funcionario may not have been initialized at empresa.testeFuncionario.main(testeFuncionario.java:18)
Neste caso, como eu faço para chamar o método "cadastrarFuncionario(...)" na classe testeFuncionario? Tem como?