Primordial vs Cacher Java Confus

Je suis confus sur la façon Impérieuse diffère de la Clandestinité en Java. Quelqu'un peut-il fournir plus de détails sur la façon dont ces différences? J'ai lu le Java Tutoriel mais l'exemple de code encore à gauche me confondre.

Pour être plus clair, je comprends Primordial de bien. Mon problème est que je ne vois pas ce que le masquage est toute différente, à l'exception du fait que l'on est au niveau de l'instance, tandis que l'autre est au niveau de la classe.

En regardant le tutoriel Java code:

public class Animal {
    public static void testClassMethod() {
        System.out.println("Class" + " method in Animal.");
    }
    public void testInstanceMethod() {
        System.out.println("Instance " + " method in Animal.");
    }
}

Ensuite, nous avons une sous-classe de chat:

public class Cat extends Animal {
    public static void testClassMethod() {
        System.out.println("The class method" + " in Cat.");
    }
    public void testInstanceMethod() {
        System.out.println("The instance method" + " in Cat.");
    }

    public static void main(String[] args) {
        Cat myCat = new Cat();
        Animal myAnimal = myCat;
        Animal.testClassMethod();
        myAnimal.testInstanceMethod();
    }
}

Puis ils disent:

La sortie de ce programme est comme suit:

Méthode de la classe des Animaux.

La méthode d'instance dans le Chat.

Pour moi, le fait que l'appel d'une méthode de classe testClassMethod() directement à partir de l'Animal de la classe, exécute la méthode des Animaux de la classe est assez évident, rien de spécial là. Puis ils appellent le testInstanceMethod() à partir d'une référence à myCat, donc encore une fois assez évident que la méthode exécutée est alors l'un dans l'instance de Chat.

De ce que je vois ce que l'appel de cacher se comporte comme primordial, alors pourquoi faire cette distinction. Si j'exécute ce code à l'aide des classes ci-dessus:

Cat.testClassMethod();

Je vais prendre:
La méthode de classe dans la Cat.
Mais si je supprime le testClassMethod() de Chat, alors je vais prendre:
La méthode de la classe des Animaux.

Qui me montre que la rédaction d'une méthode statique, avec la même signature que dans le parent, dans une sous-classe assez bien fait un remplacement.

J'espère que je suis clair mon où je suis confus et quelqu'un peut jeter un peu de lumière. Merci beaucoup à l'avance!

InformationsquelleAutor Lostlinkpr | 2012-05-15