为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花如伊 2022-05-19 19:15:34
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时要把参数写进去吗?如果在定义时没有参数,这里是不是就不用写参数了?}}
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

第一个问题:
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时要把参数写进去的,而且参数类型必须符合开始定义的类型;如果在定义时没有参数,这里就不用写参数



查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号