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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 萧刹520 于 2015-10-26 18:15 编辑

多态中父类的引用指向子类对象和接受子类对象有什么不同

4 个回复

倒序浏览
父类型的引用指向子类型对象即是:向上转型又被称作,自动类型转换.
程序分两个阶段:编译阶段,运行阶段。
例如:
//父类 Animal和子类Cat
Animal a1 = new Cat();       
程序编译阶段只知道a1是一个Animal类型。程序在运行的时候堆中的实际对象是Cat类型。
假设父类 Animal和子类Cat中均有eat方法,那么               
                //程序在编译阶段a1被编译器看做Animal类型.
                //所以程序在编译阶段a1引用绑定的是Animal类中的eat方法.(静态绑定)
                //程序在运行的时候堆中的对象实际上是Cat类型,而Cat已经重写了eat方法。
                //所以程序在运行阶段对象的绑定的方法是Cat中的eat方法.(动态绑定)
回复 使用道具 举报 1 0
意思是程序运行阶段,父类引用接收了子类对象,所以a1.eat()调用的是子类的eat方法
回复 使用道具 举报
2楼正解。。。
回复 使用道具 举报
还不是很懂。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马