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

Dúvida no Ex. 8 da Aula 3 - Começando com Orientação a objetos

O que acontece se você tentar acessar um atributo diretamente na classe? Como, por exemplo:

 Funcionario.salario = 1234;

Esse código faz sentido? E este:

 Funcionario.calculaGanhoAtual();

Faz sentido perguntar para o esquema do Funcionario, e não para um funcionário específico, seu valor anual?

Dúvida :

Somente posso acessar um atributo da classe tendo uma variável apontando para o meu objetivo do tipo da classe?

3 respostas
solução!

Olá Jhonata! Não sei se entendi bem sua dúvida. Mas é uma má prática deixar os atributos das nossas classes expostos, isso é contra a boa Pratica de Encapsulamento. Você verá mais sobre isso com o avançar dos cursos. Então aconselho a não se preocupar com isso agora, mais pra frente você verá o uso dos Getters and Setters e creio que ajudará nessa sua dúvida. Espero ter ajudado! Bons Estudos!

Ok, Obrigado.

Sim, Jhonata.

Lembre-se que as classes são apenas definições [de características e comportamentos]; cada atributo nela estabelecido só passa a existir quando tu crias um objeto a partir dela.

Por exemplo: na classe Funcionario, tu só consegues acessar o atributo salario a partir de uma instância (objeto) dela. Perceba, inclusive, que somente assim faz sentido o acesso. Afinal, tu queres descobrir o salário de alguém; esse alguém tem que ser criado, como em Funcionario f1 = new Funcionario().

Com isso, tu criaste um objeto da classe Funcionario, cuja referência foi armazenada na variável f1. Agora, tu podes designar um salário a esse objeto (f1.salario = 500) e, posteriormente, modificá-lo — da mesma forma.

Se tu tentares fazer algo como System.out.println(Funcionario.salario), ou seja, imprimir o atributo salario diretamente da classe, ocorrerá um erro de compilação, já que tu estarás tentando referenciar uma variável não-estática (salario) a partir de um contexto estático (o método main).

Como podes reparar na assinatura padrão do método main (public static void main(String[] args)), o mesmo possui o modificador de acesso static. Atributos e métodos estáticos exergam apenas outros elementos estáticos.

Tu verás sobre atributos e métodos estatáticos na última seção do curso Java I — se é que já não viste. Qualquer dúvida, estamos aí. Abraço e bons estudos.