生命如此短暂,掌握技艺却要如此长久

风流不在谈锋胜, 袖手无言味最长。**_** 莫言大道人难得,自是功夫不到头。

导航

疑问: 方法重载到底是不是面向对象的多态性问题?(好几天了,做一下总结)

最近学习方法重载,有的书中说方法重载就是多态性的实现方法;有的说他们有本质区别弄得我无所适从,求各位老大为我解惑,在这先谢谢了!
  重载不同于多态,按rexsp(http://rexsp.cnblogs.com/) 老兄的观点,关键点是晚邦定,虚函数是典型的多态。virtual,多态是指在基类中定义的属性和服务为其子类继承后,可以具有不同的数据类型或表现出不同的行为,即不同层次的类可以共享一个方法(操作)的名字,但是却有各自的不同的实现。
  我同事又将重载和多态进行了对比,重载方法必须有不同的方法签名,也就是根本就不是同一个方法的不同实现,而是不同方法者不过名字一样而已。覆盖是对一个方法的重写,如子类继承父类时子类对父类某些方法的覆盖。今天又有朋友跟我解释了这个问题,发现重载是多个名字相同的不同方法,可以在同一类中,也可在继承时子类内对父类方法进行重载,而且在同一类中不限重载次数。但覆盖(override)不一样,它只能在类继承时对父类的虚方法进行覆盖,而且对每个方法在一个子类中只能进行一次覆盖。最关键的区别是各个子类覆盖后的方法访问方式完全与覆盖前相同,这就是通用接口,但方法的实现各不同,这就是不同实现,所以称为多态性实现方式。重载方法则不具备通用接口所以不能称之为多态性实现方式。

posted on 2006-01-02 20:09  拼命郎  阅读(1340)  评论(5编辑  收藏  举报