黑马程序员技术交流社区

标题: 关于多态我有点晕! [打印本页]

作者: 顾魁    时间: 2012-8-22 13:46
标题: 关于多态我有点晕!
class fu
zi=10

class Car  extends fu

color=red
num=4
不考虑格式啊 我就是说这个意思
现在我创建一个Car的对象 是下面这个图





现在如果我 fu a=new Car()来一个多态



这个里面会是什么样子的呢???

作者: 黑马-王言龙    时间: 2012-8-22 14:58
一句话:子类持有父类的引用
子类有的,用子类的,子类没有的,去看看父类有没有。
作者: 梁志仲    时间: 2012-8-22 16:38
多态就是父类引用指向子类对象。既然是子类对象,那么对象中就必然既包含子类自己的数据,又继承了父类的数据,因此会有父子两类的数据。
但在代码中,如果用父类引用去调用子类中特有的方法,在编译时会找不到该方法,编译无法通过。因为在编译时,编译器只知道该引用是父类的引用,只有父类中的方法可以被调用。如果子类中覆盖了父类中的方法,在方法调用时,编译可以通过,因为父类中有同名的方法。而运行时是运行子类中的方法代码的。
总结如下:
多态调用方法,编译时看引用的左边父类类型,运行时看右边子类的方法。
多态调用变量时,编译和运行都是看左边类型。
作者: 顾魁    时间: 2012-8-22 17:46
梁志仲 发表于 2012-8-22 16:38
多态就是父类引用指向子类对象。既然是子类对象,那么对象中就必然既包含子类自己的数据,又继承了父类的数 ...

已解决   谢谢了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2