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

Dúvida sobre o identificador.

Já que pra criar apenas um identicador, não bastaria usar só um iincremente sem ter que criar duas variáveis?

private static int identificador = 0;

Funcionario(){
    Funcionario.identificador++;
}

public getIdentificador(){
    return Funcionario.identificador;
}
8 respostas

A variavel identificador é privada e seu acesso está restrito apenas dentro da classe.Foi gerado apenas uma variavel que fica no escopo a classe. O método get pega o valor deste identificador e retorna a quem o chamou.

Mas com o método eu não posso pegar o valor do mesmo jeito? Abs.

A variavel está como private, por isso necessita o método getIdentificador.

Segue tabela dos modificadores de acesso:

private -> podem ser vistos e acessados apenas dentro da própria classe.

protected -> podem ser visto e acessados apenas por classes pertencentes ao mesmo pacotes (package)

public -> podem ser vistos e acessados por todas as classes da aplicação.

Pois é, disso eu entendo. A minha dúvida é se é necessário a criação de duas variáveis como mostra a resposta do exercício. E eu criei o método getIdentificador como pode ver no código acima.

Então, não foram criadas duas variáveis. Foi criada apenas uma.

Yeah, no meu foi criada apenas uma mesmo, mas no código resposta foram criada duas. Entendeu minha dúvida?

solução!

Na sua classe o atributo Identificador está como Static, isso quer dizer que esse atributo tem um valor único, compartilhado em toda sua aplicação. Se você instanciar 10 funcionários, por exemplo, todos terão como identificador 10, se você instanciar outro funcionário, o valor do atributo será atualizado e compartilhado com todas as demais instancias da classe.

Na resolução do exercício, são necessários 2 atributos, pois o proximoFuncionario tem que ser compartilhado em toda aplicação, e o atributo identificador , é único para a instancia da classe.

Coloquei alguns comentários no código abaixo, para auxiliar.

Espero ter ajudado.

Abraço

public class Funcionario {
    public String nome;
    private static int proximoFuncionario = 0; //Valor Comportilhado em toda aplicação
    private int identificador;//Valor do único do identificador para cada funcionário

    public Funcionario(String nome) {
        this.nome = nome;
        this.identificador = ++proximoFuncionario;//O atributo  proximoFuncionario é incrementado, e o valor atual e guardado no indentificador 
    }

    public int getIdentificador() {
        return this.identificador;
    }

}

Mmm, I got it. Muito obrigado, Vinicius.