Exercícios Resolvidos de Membros estáticos: static

Ver Teoria

Enunciado

Um programador criou uma classe para representar os funcionários da empresa. Porém ele cometeu alguns erros. Encontre e corrija.

Passo 1

Certo pessoal, essa é mais uma daquelas questões de encontrar erros no código. Então vamos olhar com atenção, linha-por-linha! Lets bora!

Das linhas 01 a 06 temos apenas os cabeçalhos e o início da classe. Até aqui está tudo certo

Agora observe a linha 07 e 08. Pelo comentário deixado pelo programador, podemos perceber que ele quer contar a quantidade de objetos criados. Para fazer esse tipo de contagem, é necessário que este atributo seja estático, pois só dessa forma é possível criar um atributo que seja compartilhado entre todos os objetos, permitindo assim que cada objeto altere o valor da contagem. Além disso, se você olhar pra linha 22, vai ver que de fato, o programador queria que esse fosse um membro estático.

Então o nosso primeiro erro está na linha 08. Precisão adicionar a palavra chave s t a t i c para informar ao compilador que a variável n u m E m p r e g é estática. Outra coisa importante é que os atributos estáticos não podem ser inicializados dentro da declaração da classe.

Então vamos corrigir

Passo 2

Seguindo em frente vemos o construtor da classe, que recebe os valores dos atributos e incrementa o valor de contagem n u m E m p r e g . Aqui não temos nenhum erro.

Porém, note o seguinte problema: A variável estática n u m E m p r e g é privada. E esse programador não criou nenhum método para poder acessar essa variável.

Precisamos criar um método getter para acessar o valor contido em n u m E m p r e g . Como a variável n u m E m p r e g é estática, o ideal é a gente criar um método getter que seja estático também!

Então, antes de fechar a classe, vamos criar um método estático público chamado g e t N u m E m p r e g

Por enquanto vamos criar só o protótipo, e depois vamos adicionar os detalhes.

Passo 3

Continuando, nos deparamos com código das linhas 22 e 23. Aqui o objeto é inicializar o valor da variável estática.

Mas note o erro, a palavra-chave s t a t i c só deve ser usada quando declaramos o atributo dentro da classe

Corrigindo, fica dessa maneira:

Passo 4

Ok, antes de analisar a m a i n ( ) vamos escrever o código do método estático g e t N u m E m p r e g . Tudo que precisamos fazer aqui é retornar o valor contido no atributo n u m E m p r e g , então vamos ter o seguinte código:

Passo 5

Pra finalizar a questão, vamos analisar a m a i n ( ) . Aqui ele cria quatro objetos para representar quatro funcionários.

Depois ele utiliza a própria classe para imprimir o valor do atributo n u m E m p r e g . Contudo, esse é um atributo privado e por isso não é possível acessá-lo diretamente!

Por sorte, nós percebemos isso antes e já temos um método getter criado! Então para corrigir basta a gente usar o método getter:

Resposta