黑马程序员技术交流社区
标题:
关于多态
[打印本页]
作者:
Hison_lian
时间:
2015-5-13 21:08
标题:
关于多态
为什么多态中成员访问只有方法是编译左边,运行右边
作者:
ytooo00
时间:
2015-5-13 21:50
多态中对象调用成员的特点
Fu f = new Zi();
A:成员变量
编译看左边,运行看左边
B:成员方法
编译看左边,运行看右边
C:静态方法
编译看左边,运行看左边
作者:
gzp123
时间:
2015-5-13 21:57
是的,是的,多态比较麻烦
作者:
尹佳鑫
时间:
2015-5-13 22:32
不太明白你的意思。多态就是一个运行时候的多态,因为多态是一种运行期的行为,不是编译期的行为。
作者:
尹佳鑫
时间:
2015-5-13 22:36
多态:父类型的引用可以指向子类型的对象。
比如 Parent p = new Child();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;
如果有,再去调用子类的该同名方法。
(注意此处,静态static方法属于特殊情况,静态方法只能继承,不能重写Override,如果子类中定义了同名同形式的静态方法,它对父类方法只起到隐藏的作用。调用的时候用谁的引用,则调用谁的版本。)
如果想要调用子类中有而父类中没有的方法,需要进行强制类型转换,如上面的例子中,将p转换为子类Child类型的引用。
因为当用父类的引用指向子类的对象,用父类引用调用方法时,找不到父类中不存在的方法。这时候需要进行向下的类型转换,将父类引用转换为子类引用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2