class Animal
{}
class Fish extends Animal
{}
class Itegration
{
static void fn(Fish an)
{ }
public static void main(String []args)
{
Fish fh=new Fish();
Animal an=new Animal();
Itegration.fn(fh);//此时把Fish类的实例传递过去可以.
Itegration.fn(an);//把Animal的实例传递过去就不可以了.请问为什么不可以了呢/不就是相当于
//传递个引用过去了吗?不能理解,请高手指点一二,不胜感激!
}
}

解决方案 »

  1.   

    你的fn(Fish n)的参数是Fish,Animal是他的父类,当然不可以
      

  2.   

    改为fn(Anmail an),这时你传Fish或Anmail的引用都可以
      

  3.   

    你只告诉Itegration类有 Fish类型的对象实例,并没有告诉有告诉它还有Animal类型对象的实例。
    2楼所用的方法就是进行类型转换。
    Itegration.fn(an) 这时候进行值引用。当Itegration对参数进行检查的时候发现这个类型(Animal)它并不知道,它只是知道Fish类型。当然就报错了。