已有101人关注
类的继承与向上转型
发表在Java图书答疑 2019-08-13 《Java从入门到精通(第4版)》第10章 接口、继承与多态
是否精华
版块置顶:

class Animal {

void move() { 

System.out.println("跳跃");

}

}


class Fish extends Animal {

void move() {

System.out.println("游泳");

}

}


public class Demo {

public static void main(String[] args) {

Animal jack = new Fish();

jack.move();          

}

}

运行结果:游泳

这里jack是父类对象,jack.move()是父类对象的调用,这里不应该输出跳跃吗?我知道Animal jack=new Fish()是父类声明了对象,由子类来实例化,这里把子类对象赋值给父类类型的变量,那这里我可以把主类对象jack近似看做子类对象吗,我认为这样看了正好jack.move()类似于子类对象调用了方法,刚好输出了游泳,我这么看有什么问题吗??求解答

分享到:
精彩评论 2
18324139407
学分:28 LV2
2019-08-13
沙发

如果把jack一直看做父类对象的话,jack.move()会是父类对象的调用,会输出跳跃啊,,这里十分不明白,哪里有问题?

18324139407
学分:28 LV2
2019-08-14
板凳

这边懂了,统一回复一下大家,希望能对大家有帮助!

如果父类是被子类实例化的,也就是通常说的向上转型,且子类重写了父类的某个方法,此时父类调用这个方法,是被子类重写之后的方法。

这里子类重写了move方法,父类调用这个move方法,也就是相当于调用了子类重写后的move方法,结果自然输出为游泳了。


首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照