Geralmente, é fácil acessar um membro estático. Você acabou de colocar o nome da classe antes do método ou variável e pronto. Por exemplo:
System.out.println(Koala.count);Koala.main(new String[0]);Ambos são agradáveis e fáceis. Há uma regra que é mais complicada. Você pode usar uma instância do objeto para chamar um método estático. O compilador verifica o tipo da referência e usa isso em vez do objeto - que é sorrateiro de Java. Este código é perfeitamente legal:
5: Koala k = new Koala();6: System.out.println(k.count); // k is a Koala7: k = null;8: System.out.println(k.count); // k is still a KoalaAcredite ou não, esse código gera 0 duas vezes. A linha 6 vê que k é um Koala e a contagem é um variável estática, então ela lê essa variável estática. A linha 8 faz a mesma coisa. Java não se importa esse k é nulo . Como estamos procurando uma estática, isso não importa.
Lembre-se de olhar para o tipo de referência para uma variável quando vir um método estático ou uma variável. Os criadores do exame tentarão induzi-lo a pensar: Uma NullPointerException é lançada porque a variável é nulo . Não se deixe enganar!
Mais uma vez, porque isso é realmente importante: o que a seguinte saída gera?
Koala.count = 4;Koala koala1 = new Koala();Koala koala2 = new Koala();koala1.count = 6;koala2.count = 5;System.out.println(Koala.count);Felizmente, você respondeu 5. Existe apenas uma variável de contagem , pois é estática. Está definido como 4, depois 6, e finalmente chega a 5. Todas as variáveis de Koala são apenas distrações.
Felizmente, quando isso acontece, podemos apenas nos referir aos membros estáticos através do nome da classe em o código em vez de tentar usar uma importação estática.