关于类继承关系的一个有关问题,困扰小弟我好几天了,程序只有几行,可小弟我就是不明白,请大家帮忙

关于类继承关系的一个问题,困扰我好几天了,程序只有几行,可我就是不明白,请大家帮忙.
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的实例传递过去就不可以了.请问为什么不可以了呢/不就是相当于
//传递个引用过去了吗?不能理解,请高手指点一二,不胜感激!
}
}

------解决方案--------------------
你的fn(Fish n)的参数是Fish,Animal是他的父类,当然不可以
------解决方案--------------------
改为fn(Anmail an),这时你传Fish或Anmail的引用都可以
------解决方案--------------------
小不包大
------解决方案--------------------
你只告诉Itegration类有 Fish类型的对象实例,并没有告诉有告诉它还有Animal类型对象的实例。
2楼所用的方法就是进行类型转换。
Itegration.fn(an) 这时候进行值引用。当Itegration对参数进行检查的时候发现这个类型(Animal)它并不知道,它只是知道Fish类型。当然就报错了。