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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ╃→梅飛揚之城 中级黑马   /  2014-8-4 19:05  /  1380 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ╃→梅飛揚之城 于 2014-8-5 09:21 编辑

多态的实现方面有哪几种?具体的区别是什么?

4 个回复

正序浏览
学习啦
回复 使用道具 举报
路过学习一下~~~
回复 使用道具 举报

      . 同1种行为不同的事物具有不同的表现形式.
    父类变量指向子类对象 不同的子类对象对于同1个方法 执行的代码却不一样.
        多态的表现形式 1)将父类类型作为参数 2)将父类类型作为返回值.  
        父类变量指向子类对象 通过父类变量只能点出父类的成员.
       
        实现多态的步骤:
        1) 找出父类
        2) 找出所有子类都具有的相同方法 但是实现方式各不一样.
        3) 将这个方法在父类中标记为虚方法或者抽象方法
        4) 在子类中重写.
        5) 让父类变量指向子类对象(父类类型作为参数 作为返回值)
        6) 调用父类变量的虚方法
        1.参数不同(重载)2.参数相同(隐藏基类方法)
        子类可以重写父类方法

多态-接口.PNG (126.85 KB, 下载次数: 38)

多态-接口.PNG
回复 使用道具 举报
虚方法
抽象方法
接口
什么时候使用虚方法实现多态?
当父类需要实例化,或者这个方法需要默认实现或者说可以默认实现的情况下,并且它的子类都应该具有这个方法的功能,用虚方法,virtual修饰,子类通过override重写。

什么时候使用抽象类抽象方法?

当父类不需要被实例化,或者说实例化一个父类没有意义,并且方法不需要默认实现的情况下,并且它的子类都应该具有这个方法的功能,用抽象类。

什么时候使用接口?

当两个类无法抽象出一个父类,但是它们有相同的方法,那么可以考虑使用接口,比如飞机类和小鸟类,它们都有飞的方法,但显然它们无法抽象出一个父类。还有一种情况就是,一个父类的子类,并不是所有子类都有相同的功能的时候,比如动物类,它的子类可以是马,猪,牛,鸟,显然并不是所有的动物类的子类都会飞,只有鸟会飞,那么把飞这个方法,写成虚方法或者抽象方法在动物类中显然不合适,那么也可以考虑使用接口。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马