1
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

}

質問: 両方のケースで出力が true になるのはなぜですか?

4

2 に答える 2

4

実行時にローカル変数によって参照されるオブジェクトgはタイプであるためDog(したがって、例にはありませんが)。AnimalDog extends Animal

于 2012-08-14T12:25:31.467 に答える
4

これがポリモーフィズムです。ここここを参照してください。

この動作を避けたい場合は、getClass()代わりに を使用してくださいinstanceof例については、こちらの回答を参照してください。

于 2012-08-14T12:25:38.477 に答える