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类型。当然就报错了。