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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵刘滨 中级黑马   /  2012-8-8 16:31  /  1919 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

重载和覆盖的区别?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
1,覆盖,是是把基类的方法隐藏了,其实在子类中基类方法还存在,只是不可见而已,但是派生类中定义的时候前面要加上new;
2,重载没有new, 原基类的方法在子类中已经变成另一个方法了 。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
覆盖就是子类中有和父类相同的方法  当子类调用的时候 只能使用子类的方法  可以使用new方法调用父类的影藏方法

重载就是子类与父类相同的方法被实现不同的作用,实现了另外一种功能

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
重载:在同一类中。方法名相同,参数列表不同。

重写:在不同类中(子父类中)。
         方法声明相同(返回类型,方法名,参数列表)。

        重载可以改变返回类型。

重写需要注意:
        **子类方法的访问权限要大于等于父类方法的访问权限。
        **静态只能重写静态。一般不会出现。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
重载,必然发生在一个类中,函数名相同,参数类型或者顺序不同构成重载,与返回类型无关
覆盖,在子类中写一个和基类一样名字(参数不同也算)的非虚函数,会让基类中的函数被隐藏,编译后会提示要求使用New关键字

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
重载:overload,是方法的名称相同,参数或者参数类型不同,进行多次重载以适应不同的需求,重载是面向过程的概念
覆盖:override,是进行基类中函数的重写,覆盖是面向对象的概念

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马