黑马程序员技术交流社区

标题: 对于面向对象的多态,父类 变量名=new 子类(); [打印本页]

作者: 河边捉虾米    时间: 2016-9-8 22:58
标题: 对于面向对象的多态,父类 变量名=new 子类();
  对于面向对象的多态,父类 变量名=new 子类();
  变量名.属性a,为什么输出的是父类中的变量a而不是子类中的变量a
作者: zhangfengg    时间: 2016-9-8 23:09
冯家老师的视频讲的很清楚,可以参考.
作者: 许华洋    时间: 2016-9-8 23:26
子类对象当中不全是子类的属性,有一块区域存放着父类的属性,而变量名.属性调用的就是父类这部分,day09多态那部分笔记有
作者: yigezhifu    时间: 2016-9-8 23:28
这个看课件吧
作者: 爱吃柠檬    时间: 2016-9-8 23:31
在多态中,当父类引用指向子类对象时,分三种情况,如果是调用的成员变量,则编译和运行时都看左边,如果调用的是非静态方法,编译看左也就是看父类,运行时看右边也就是子类(因为子类重写了父类方法),当调用的是静态方法时,编译和运行都看左边
作者: MarsBong    时间: 2016-9-8 23:34
这个涉及的是内存上知识,在堆内存中创建子类对象时,其中会分配一个内存空间给父类的变量,由于是父类引用指向子类对象,实际在栈内存中父类的引用指向的是堆内存中父类的那块
作者: 干煸爪哇鱼    时间: 2016-9-8 23:41
既然是多态前提条件就是继承关系,继承父类的一切可以继承的属性 输出的自然是父类中的a
作者: 干煸爪哇鱼    时间: 2016-9-8 23:43
既然是多态前提条件就是继承关系,继承父类的一切可以继承的属性和方法,加以引用
作者: a65912555    时间: 2016-9-8 23:44
顶顶顶~~




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