A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刀郎去西藏 中级黑马   /  2015-12-12 00:10  /  623 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

想必大家对于多态中调用那一块稍微有点不清楚,看基础视频时老师也是讲了几条,让大家一定要记住。我当时就是按照老师的说法去记但总是不太如人意,感觉看到题的时候,才在想概念与结论,好不熟练,于是自己私下里查找知识,发现有种方法,很好记忆,遂做个运输大队长,运给各位学友。有问题的欢迎大家指正。
我们知道在使用子类的构造方法创建对象时,如果我们没有认为调用父类的构造方法(super),那么虚拟机会默认调用空参数的super()方法.这样子我们可以将子类对象分为两部分(一):父类对象;(二):子类特有对象。父类对象中包含父类的成员变量,以及父类方法,《最重要的是包括子类重写父类的方法。子类重写父类的方法。子类重写父类的方法。》——重要事情说三遍。为什么这样说呢?因为我们知道重写知识改了方法体,而没有动方法声明,这就相当于房客和房子的关系,重写方法,知识换了一群房客,房子还在那里,一动不动,所以还在父类对象中。子类特有对象就包括子类的特有的成员变量和方法。只要记住这些不论如何出题也不会错了
当用父类引用来调用子类方法和变量,肯定编译错误,只有引用变量只能调用父类的变量和方法。
总结:只要知道重写方法,在父类对象中,就ok。当父类引用指向子类的对象,其实只能指向父类对象,而不能指向子类特有对象,所以父类引用变量调用子类特有的变量和方法,只能报错。
欢迎各位朋友指正。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马