Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

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

class Empresa {
    Funcionario[] funcionario;
    int i=0;
    void adiciona(Funcionario f) {
        this.funcionario[i] = new Funcionario();
        i++;
    }
    public void getNomes() {
        for(int i2=0;i2<this.funcionario.length;i2++) {
            System.out.println(this.funcionario[i2]);
        }
    }
}

class Funcionario {
    String nome;
    private int idade;
    private double salario;

    public void setSalario(double valor) {
        salario+=valor;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public double getSalario() {
        return this.salario;
    }

}
public class main2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Empresa empresa = new Empresa();
        empresa.funcionario = new Funcionario[3];
        Funcionario f0 = new Funcionario();
        empresa.adiciona(f0);
        Funcionario f1 = new Funcionario();
        empresa.adiciona(f1);
        Funcionario f2 = new Funcionario();
        empresa.adiciona(f2);
        f0.setNome("Funcionario 0");
        f1.setNome("Funcionario 1");
        f2.setNome("Funcionario 2");
        f0.setSalario(5000);
        f1.setSalario(2000);
        f2.setSalario(1000);
        empresa.funcionario[0].nome = "Douglas";
        System.out.println(empresa.funcionario[0].nome);
        empresa.getNomes();
    }

}

Por que o os metodos setNome estão me enganando e na verdade não estão mudando o nome como eu quero? Mas compila normal, e muda a variavel nome em algum lugar. kkk

1 resposta
solução!

Douglas,

Na hora de imprimir os nomes você está fazendo apenas:

public void getNomes() {
        for(int i2=0;i2<this.funcionario.length;i2++) {
            System.out.println(this.funcionario[i2]);
        }
}

Para imprimir os nomes você deve acessar a propriedade nome do elemento que você está iterando no momento: this.funcionario[i2].nome

Abraço!