Java: acesso às constantes em uma enumeração (enum)

Ao ler o livro da SCJP, encontrei algo assim no capítulo 1 "autoteste":

enum Animals {
    DOG("woof"), CAT("meow"), FISH("burble");
    String sound;
    Animals(String s) { sound = s; }
}

class TestEnum {      
    static Animals a; 
    public static void main(String[] args) {                                                                                     
        System.out.println(a.DOG.sound + " " + a.FISH.sound);   

        // the following line is from me
        System.out.println(Animals.DOG.sound + " " + Animals.FISH.sound);
    }
} 

Nota: o código compila bem. O que eu não entendo é por que podemos acessar as constantes DOG, CAT ou FISH a partir da variávela. Eu pensei (e também está escrito no livro) que as constantes CÃO, PEIXE e CAT são implementadas de maneira semelhante àpublic static final Animals DOG = new Animals(1); Então, se eles realmente são estáticos, por que podemos acessá-los a partir dea ? A última linha é a maneira como estou familiarizado.

questionAnswers(3)

yourAnswerToTheQuestion