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.