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

Dúvida no Ex. 6 da Aula 5 - Modificadores de acesso

Como coloquei todos os atributos da classe Empresa como private, tive que criar um método para definir o tamanha do array, após isto surgir uma dúvida.

O método que define o tamanho array está assim:

public void tamanhoVetorEmpregados (int tamanho) { this.empregados = new Funcionario[tamanho]; }

Está tudo funcionado corretamente, a minha duvida é em relação ao método abaixo:

public Funcionario getFuncionario (int posicao) { return this.empregados[posicao]; }

Neste segundo método não consegui entender porque tenho que colocar public Funcionário se no método anterior não precisei. Se eu tirar esse Funcionário deste segundo método, o código apresenta o erro abaixo:

funcionario.java:44: error: invalid method declaration; return type required public getFuncionario (int posicao) { ^ 1 error

4 respostas
solução!

Este Funcionario indica que o metódo ira devolver um funcionário, por exemplo:

Funcionario batman = getFuncionario(1);

Já o void indica que o método não terá nenhum tipo de retorno após o processamento.

Foi como o Caio Incau falou, no primeiro você colocou 'public void' porque o método ele não terá um retorno pois cria um uma simples array.

Bem se você criar um método com um retorno você precisa informar para o java que tipo de retorno você quer nesse caso um 'funcionario'.

Por isso que você precisa colocar 'Funcionario' depois do public caso precisasse retornar um salário de um funcionário como exemplo um salário que tivesse salvo em uma variável do tipo double, você deveria informar para ou java ou seja colocar double, isso aplica para todos os tipos de variável.

//retorna um double public double getsalario(double salario){return salario; }

//retorna um int public int getcpf(int cpf){return cpf; }

//retorna um funcionário public Funcionario getFuncionario (int posicao) { return this.empregados[posicao]; }

Ok, mas esse funcionário é a classe ou objeto criado na memória?

Quando invoco esse método:

System.out.println(empresa.getFuncionario(0));

é impresso a seguinte mensagem:

Funcionario@659e0bfd

Tenta reescrever o método com um toString(); Nesse caso todo array é um objeto, e ele está retornando o endereço do objeto.

Implementa:

@Override public String toString() { return "Posição do funcionário" + this.empregados[posicao]; }

Alguma coisa você tá fazendo errado, não é o correto, mais creio que vai rodar. Beleza? Abraços!