class ObjectConvertTest{
 public static void main(String []args){
  Animal a=new Animal("animla");
  Dog dog=new Dog("dog","red");
  Cat cat=new Cat("cat","blue");
  ObjectConvertTest oct=new ObjectConvertTest();
  oct.f(a);
  oct.f(dog);
  oct.f(cat);
 }
 public void f(Animal a){
    System.out.println(a.name);
    if(a instanceof Dog){
     Dog dog=(Dog)a;
     System.out.println(dog.name+":"+dog.eyeColor);
    }
    if(a instanceof Cat){
     Cat c=(Cat)a;
     System.out.println(c.name+":"+c.eyeColor);
    } 
   }
}
后面是Animal,Dog等的定义,其中Dog,Cat都是继承Animal的
thinking in java中也有类似的例子,不过还是不清楚instance of是什么意思public void f(Animal a)中定义了参数为Animal,那么它的子类可以作为参数传进去??
instance of的作用就是在传入参数不是这个类本身,而是它的某个子类时,判断它传入的是哪一个子类,是这样吗??

解决方案 »

  1.   

    instanceof 是个二元运算符,用来检查一个实例是不是属于某一种类型的。
      

  2.   

    class A{}class B{
       A a = new A();   if (a.instanceof(A))
          System.out.println("True");
    }看看吧  楼主  解释楼上的都解释清楚了
      

  3.   

    那么Dog类型的参数可以传到Animal类型参数的函数里面吗
      

  4.   

    public void f(Animal a)中定义了参数为Animal,它的子类也可以作为参数传进去,如果不强制转换类型,可以使用父类的方法,如果要使用子类的方法就必须将其强制转换称对应的子类类型。
    istanceof 可以判断其直接对应的类型如Dog,当然也会向父类兼容的。上面的a instanceof Animal返回结果也是true的。