Pregunta

class Animal
{

}

    class Dog extends Animal
    {

    }

    class main
    {
      public static void main(String args[])
    Animal g= new Dog();
    System.out.println(g instanceof Dog);      // 1st case

    System.out.println(g instanceof Animal);   // 2nd case

}

QUESTION: why the output is true in both cases ?

¿Fue útil?

Solución

Because the object that is referenced, at run-time, by local variable g is of type Dog (and thus also an Animal, because Dog extends Animal, though that's missing from your example).

Otros consejos

This is polymorphism in action. See here and here.

If you want to avoid this behaviour, use getClass() instead of instanceof. See my answer here for an example.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top