关于面向对象——多态

理解多态:同一个操作作用与不用类的实例,产生不同的执行结果。

分两种:编译性时多态(重载)和运行时多态(覆盖)

重载: 同一个作用域内允许多个同名函数,这些参数(参数个数不同或者参数类型不同或者两者都不同)。

ps:因编译时已确认函数名称,是静态的,so 运行速度快

覆盖:子类重新定义父类的虚函数做法。

ps:子类重新定义父类的虚函数后,父类指针分配给子类,动态调用子类函数。

 

覆盖:分两种:1.虚函数 2.接口多态

关于虚函数执行过程:对象A调用fun()--->检查fun是否是虚函数--->否,直接调用fun

 ---->是,检查A对象是否 override fun(),--->是,直接调用

----->否,检查A的父类或者父类的父类,直到找到 override fun() 为止,调用即可。

详见:

tks:http://blog.163.com/road0904@126/blog/static/6302267820087544419774/

关于接口多态执行过程

如同 虚函数一样,即:谁的实例就调用谁的办法。

详见:

tks:http://www.cnblogs.com/FreeDong/archive/2012/08/11/2626312.html

总结:

多态的运用场景很多,特别是在设计模式(创建者、结构型模式)当中,几乎是离不开多态。注意:深层次继承,提高程式耦合度,将程式变复杂。

我们使用多态的思想就是,抽象他们的共同点,不去考虑他们的具体实现

 

 

 

posted @ 2013-06-14 12:01  365lei  阅读(242)  评论(0编辑  收藏  举报