时间:2021-05-20
一、重载
1、重载示意
重载(Overload)是重新加载的意思,指的是同一个类中同名,但是参数列表不同的方法组(返回值不能区别函数是否重载),重载没有关键字。通俗点说重载是对内存中同一个类中的函数或方法进行重新加载的意思。
2、发生条件
必须发生在一个类中,函数名相同,参数类型或者个数不同构成重载,与返回类型无关。
如:
Public class Name { Public string GetName(string username) { Return username; } Public int GetName(int usercount) { Return usercount; } }二、重写
1、示意
重写(Override)指子类修改父类中某个函数的函数体,需要重写的父类中的函数必须是由virtual、abstract 或override标注的,不能重写非虚方法或静态方法。
Override是在继承的时候,如果你写的函数与要继承的函数函数特征(函数特征包括函数名,参数的类型和个数)相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。
2、发生条件
必须发生在基类和派生类中,基类函数必须用virtual、abstract 或override修饰,派生类用override修饰。
如:
class Program { static void Main(string[] args) { oc oa=new ob(); oa.b(1, 2); //输出结果为fdfdf } public class oc { private int a; //封装 public int geta { get { return a; } } public int seta { set { a = value; } } //函数b public virtual int b(int c, int e) { Console.WriteLine("{0}+{1}={2}", c, e, c + e); return c + e; } } //派生类ob,基类oc public class ob : oc { //重写基类中的函数b public override int b(int c,int e) { Console.WriteLine("fdfdf"); return c; } } }三、覆盖
1、示意
覆盖指重新定义子类中与父类具有相同函数特征的的函数体。子类中有一函数和父类中函数的函数特征相同,但函数体不同,称为覆盖。这种覆盖又称为隐藏,是隐藏父类中相同的函数,并没有进行重写。
2、发生条件
在子类中写一个和基类一样名字(参数不同也算)的非虚函数,会让基类中的函数被隐藏,编译后会提示要求使用New关键字。
如:
class Program { static void Main(string[] args) { oc oa=new ob(); oa.b(1, 2); //输出结果为1+2=3 } public class oc { private int a; //封装 public int geta { get { return a; } } public int seta { set { a = value; } } //函数b public int b(int c, int e) { Console.WriteLine("{0}+{1}={2}", c, e, c + e); return c + e; } } //派生类ob,基类oc public class ob : oc { //覆盖,隐藏基类中的函数b public new int b(int c,int e) { Console.WriteLine("fdfdf"); return c; } } }重写(Override)的两个函数的函数特征相同,应用在子类和父类中,会重写父类函数;
重载(Overload)的两个函数的函数名虽然相同,但函数特征不同,应用在同一类中;
覆盖(new)两个函数的函数名一定相同,但函数特征可相同也可不相同,应用在子类和父类中,会隐藏父类同名函数。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C++中重载、重写(覆盖)和隐藏的区别,对于C++面向对象程序设计来说是非常重要的概念。具体分析如下:1.重载:重载从overload翻译过来,是
java中的方法重载和方法重写有很多区别。下面给出了方法重载和方法覆盖之间的差异列表:编号方法重载方法重写1方法重载用于提高程序的可读性。方法重写用于提供已经由
重载和重写的区别有: 1、定义上不同。重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同,调用的时候根据函数的参数来区别不同的函数。重写是指在派
首先,我们看看关于重载,和覆盖(重写)的简明定义:方法重载:如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。方法覆盖:如果在子类
Java中重载与重写的区别 首先我们来讲讲:重载(Overloading)(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有