Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Aula6 - Ex4 - Encapsulamento

Não consegui manipular o array de objetos encapsulado pra private. Já que não posso criar objetos:

public static void main(String[] args){

    Empresa empresa = new Empresa();
    Funcionario f1 = new Funcionario();
    empresa.funcionario = new Funcionario[5];
//...

Resposta do javac:

Arrays.java:101: error: funcionario has private access in Empresa
        empresa.funcionario = new Funcionario[5];
               ^
1 error

obs: na class Empresa o array de classe Funcionario está:

private Funcionario[] funcionario;
4 respostas
solução!

Lucas a manipulação precisa ser feita através do encapsulador. A atribuição direta ao atributo não ira funcionar para isso você vai precisar de setFuncionarios(Funcionario[] funcionario) onde você vai atribuindo a funcionário. A partir dessa necessidade que você cria os encapsulamentos. Para acessar o objeto getFuncionario()

Vc pode explicar em mais detalhes?

Não sei se é o que vc quis dizer, mas consegui assim:

public void setFuncionario(int num){
        this.funcionario = new Funcionario[num];            

    }

Funfou!

Lucas é exatamente isso, mas com uma ressalva, no método setFuncionario que você colocou, você deveria ter criado esse objeto e passar a referencia dele como parametro .

// Test
Funcionario[] funf = new Funcionario[10];
empresa.setFuncionario(funf);

// Class
public void setFuncionario(Funcionario[] funcionarios){
    this.funcionario = funcionarios;
}