Anulando vs ocultando Java - Confundido

Estoy confundido sobre cómo la Anulación difiere de la Ocultación en Java. ¿Alguien puede proporcionar más detalles sobre cómo estos difieren? yo leo elTutorial de Java Pero el código de muestra todavía me dejó confundido.

Para ser más claros, entiendo Anular bien. Mi problema es que no veo que la ocultación sea diferente, excepto por el hecho de que uno está en el nivel de instancia mientras que el otro está en el nivel de clase.

Mirando el código tutorial de Java:

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

Entonces tenemos un gato de subclase:

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();
    }
}

Luego dicen:

La salida de este programa es la siguiente:

Método de clase en animal.

El método de instancia en el cat.

Para mí, el hecho de que llamar a un método de clase testClassMethod () directamente desde la clase Animal, ejecute el método en la clase Animal es bastante obvio, no hay nada especial allí. Luego llaman al testInstanceMethod () desde una referencia a myCat, por lo que, una vez más, es bastante obvio que el método ejecutado es el de Cat.

Por lo que veo, el ocultamiento de llamadas se comporta como una anulación, entonces ¿por qué hacer esa distinción? Si ejecuto este código usando las clases anteriores:

Cat.testClassMethod();

Lo tendré:El método de clase en el cat. Pero si quito el testClassMethod () de Cat, entonces obtendré:El método de clase en animal.

Lo que me muestra que escribir un método estático, con la misma firma que en el padre, en una subclase hace una anulación.

Con suerte, estoy dejando en claro dónde estoy confundido y alguien puede arrojar algo de luz. Muchas gracias de antemano!

Respuestas a la pregunta(13)

Su respuesta a la pregunta