中重写与重载是什么?
覆写,⼜称重写,就是在⼦类中重复定义⽗类⽅法,提供不同实现,存在于有继承关系的⽗⼦关系。当⼦类重写⽗类的虚函数后,⽗类对象就可以根据根据赋予它的不同⼦类指针动态的调⽤⼦类的⽅法。从⽰例的分析,总结覆写的基本特征包括:
在.NET中只有以virtual和abstract标记的虚⽅法和抽象⽅法才能被直接覆写。
覆写以关键字override标记,强调继承关系中对基类⽅法的重写。
覆写⽅法要求具有相同的⽅法签名,包括:相同的⽅法名、相同的参数列表和相同的返回值类型。
概念:虚⽅法虚⽅法就是以virtual关键字修饰并在⼀个或多个派⽣类中实现的⽅法,⼦类重写的虚⽅法则以override关键字标记。
虚⽅法调⽤,是在运⾏时确定根据其调⽤对象的类型来确定调⽤适当的覆写⽅法。.NET默认是⾮虚⽅法,如果⼀个⽅法被virtual标记,则不可再被static、abstrcat和override修饰。概念:抽象⽅法抽象⽅法就是以abstract关键字修饰的⽅法,抽象⽅法可以看作是没有实现体的虚⽅法,并且必须在派⽣类中被覆写,如果⼀个类包括抽象⽅法,则该类就是⼀个抽象类。因此,抽象⽅法其实隐含为虚⽅法,只是在声明和调⽤语法上有所不同。abstract和virtual⼀起使⽤是错误的。
重载基础篇
java重写和重载的区别 重载,就是在同⼀个类中存在多个同名的⽅法,⽽这些⽅法的参数列表和返回值类型不同。值得注意的是,重载的概念并⾮⾯向对象编程的范畴,从编译器⾓度理解,不同的参数列表、不同的返回值类型,就意味着不同的⽅法名。也就是说,⽅法的地址,在编译期就已经确定,是这⼀种静态绑定。从⽰例中,我们总结重载的基本特征包括:
重载存在于同⼀个类中。
重载⽅法要求具有相同的⽅法名,不同的参数列表,返回值类型可以相同也可以不同(通过operator implicit 可以实现⼀定程度的返回值重载,不过不值得推荐)。
.NET 2.0引⼊泛型技术,使得相同的参数列表、相同的返回值类型的情况也可以构成重载。
重载就是⼀些⼏个函数名字完全⼀样,但参数类型或个数不⼀样,实际调⽤将按参数类型来区分
⽐如,你现在有2个Max函数
1)
int Max(int i,int j)
{
}
2)
float Max(float i,float j)
{
}
在你的程序内
int i,j,k;
k=Max(i,j);//将调⽤第⼀个Max
float x,y,z;
z=Max(x,y);//将调⽤第⼆个Max
显然重载也具备多态性, 但这样多态是基于原代码级别的多态, 以上2个Max函数在⽂本下是同名,但经过编译后,内部名字是不⼀样,要加上参数类型等⼀些信息,这个过程叫名字连编, 在编译调⽤Max的源代码时,编译器根据调⼊时的参数选择调⽤正确的Max函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论