请问参数的类型可以用父类的名字定义吗?在方法体中怎么用参数调用的前面sleep方法啊?

class Animal
{
int height;
void sleep()
{
System.out.println("Animal sleep");
System.out.println("height="+height);
}
}

class Fish extends Animal
{
int height;
void sleep()
{
super.height=30;
super.sleep();
System.out.println("Fish sleep");
}
}
class Inteqration
{
static void fh(Animal an) //参数的类型可以用父类的名字定义吗?而且方法体中怎么用参数调用的前面sleep方法啊 ?

{
an.sleep();
}
public static void main(String []args)
{
Fish fh=new Fish();
Animal an; //用父类的名字定义类型?那么an到底是什么呢?
an=fh; //把对象的值赋给an?
Inteqration.fh(an); //调用fh时要把参数写进去吗?如果在定义时没有参数,这里是不是就不用写参数了?
}
}

繁花如伊
浏览 80回答 1
1回答

暮色呼如

第一个问题:static void fh(Animal an) //参数的类型可以用父类的名字定义吗?而且方法体中怎么用参数调用的前面sleep方法啊 ?回答:参数的类型可以用父类的名字定义,方法体中使用an.sleep()是调用父类Animal中的sleep()方法,如果想调用类Fish中的sleep()方法,这样写:if (an instanceof Fish){((Fish)an).sleep();}第二个问题:Animal an; //用父类的名字定义类型?那么an到底是什么呢?回答:这是声明一个Animal类型的变量,这个an其实就是一个Animal,而Fish继承了Animal,任何Animal的子类,都可以用来实例化an这个变量比如:Animal an = new Fish();第三个问题:an=fh; //把对象的值赋给an?回答:从Fish fh=new Fish(); 可以看出,fh是Fish的一个实例,而Fish继承Animal,所以可以将fh对象赋值给an(实际上是一个引用)第四个问题:Inteqration.fh(an); //调用fh时要把参数写进去吗?如果在定义时没有参数,这里是不是就不用写参数了?回答:调用fh时要把参数写进去的,而且参数类型必须符合开始定义的类型;如果在定义时没有参数,这里就不用写参数
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java