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的实例传递过去就不可以了.请问为什么不可以了呢/不就是相当于
//传递个引用过去了吗?不能理解,请高手指点一二,不胜感激!
}
}
{}
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的实例传递过去就不可以了.请问为什么不可以了呢/不就是相当于
//传递个引用过去了吗?不能理解,请高手指点一二,不胜感激!
}
}
2楼所用的方法就是进行类型转换。
Itegration.fn(an) 这时候进行值引用。当Itegration对参数进行检查的时候发现这个类型(Animal)它并不知道,它只是知道Fish类型。当然就报错了。