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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

谁能详细说说:多态和重载都是用统一的对外接口来完成不同的功能,他们的区别何在?

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

4 个回复

倒序浏览
付炯 黑马帝 2011-11-17 14:35:54
沙发
在面向对象语言中 接口的多种不同的实现方式即为多态 是允许将父对象设置成为和一个或多个它的子对象相等的技术
重载分为构造方法重载和方法重载 重载即指在同一类内 两个以上的构造方法或同名方法 使用不同类型或不同个数的参数的现象就称为重载
看到一句话 方法的多态叫做重载 但是对象的多态不是重载

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
多态是指抽象的对象可以有多种实际的形态,
重载是指子类对从父类继承过来的方法进行重新定义,方法名相同,参数个数及其类型不同

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
小石 黑马帝 2011-11-17 21:05:36
板凳
多态是指不同的对象对于同一个方法调用却有不同的执行结果 通过抽象方法和虚方法都可以实现多态 抽象方法在它的子类中通过override关键字重写虚方法也可以被重写
重载是指类中两个以上的方法,方法名相同,但是使用的参数类型不同或者参数个数不同,编译器就知道在何种情况下调用哪个方法,这个是方法的重载

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
搞明白了。
重载,是指允许存在多个同名方法,而这些方法的参数不同。重载的实现是:编译器根据方法不同的参数表
,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期
就绑定了。
多态:是指子类重新定义父类的虚方法(virtual,abstract)。当子类重新定义了父类的虚方法后,父类根据
赋给它的不同的子类,动态调用属于子类的该方法,这样的方法调用在编译期间是无法确定的。
不难看出,两者的区别在于编译器何时去寻找所要调用的具体方法,对于重载而言,在方法调用之前,编译
器就已经确定了所要调用的方法,这称为“早绑定”或“静态绑定”;而对于多态,只有等到方法调用的那一刻
,编译器才会确定所要调用的具体方法,这称为“晚绑定”或“动态绑定”。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马