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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bullfrog 中级黑马   /  2014-9-2 22:09  /  925 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 bullfrog 于 2014-9-14 10:55 编辑

...................

3 个回复

倒序浏览
说白了,对于多态,有父类多态、抽象类多态、接口多态。最常用的是接口多态。因为一个类可以同时实现多个接口,这样这个类可以同时实现多个功能。而如果一个类继承了另一个类的话,就不能再继承其他类了,这样这个类只能获取这一个父类中的功能,不利于子类功能的扩展。这里说说子类继承父类问题:子类继承了父类,也就获取了父类的功能,包括父类中的成员变量和成员方法都会被子类获取;但是父类如果对其某些成员私有化,那么子类就不能获取到父类私有化的功能了;要想获得父类私有化的功能,要用set、get方法。其次,子类继承了父类,将获到父类的功能,但子类可以有自己特有的功能(特有的成员变量、方法),而对于子类特有的功能,父类是无法访问的,如果要访问子类特有的功能,就要对父类进行转型,把父类引用转型为子类引用,然后再调用子类特有的功能即可。
回复 使用道具 举报
______雨点ペ 发表于 2014-9-2 23:37
说白了,对于多态,有父类多态、抽象类多态、接口多态。最常用的是接口多态。因为一个类可以同时实现多个接 ...

总结的不错,,不过你最后那个把父类引用转型为子类引用怎么理解呢?
回复 使用道具 举报
碎流 发表于 2014-9-2 23:48
总结的不错,,不过你最后那个把父类引用转型为子类引用怎么理解呢?

比如一个父类Animal类引用指向子类Dog类的对象:Animal  a = new Dog( );Dog类中有一个Dog类特有的方法:eat( ). 那么Animal类的引用a就不能调用eat( ).只有把Animal类引用a转为其子类Dog类的引用,才能调用子类Dog类的特有的eat( ).如何转型呢?即:Dog d = (Dog)a.然后用子类Dog类的引用d就可以调用子类Dog类的eat( ),此时,相对于Dog类的引用d而言,eat( )不再是Dog类特有的方法,而是Dog类自己的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马