.net 覆盖 重写 重载 的区别

如题所述

一个抽象方法,接口,标记为virtual的方法,你在派生类中去实现,或者改写他的功能,叫重写

在父类中定义了一个方法如: public string GetName(){ return "Name"}方法,在派生类中再次定义了一个同样的方法public string GetName(){ return "Value"} 则派生类覆盖了父类的方法

覆盖重写的区别:

重写:
public class C1
{
public virtual string GetName()
{
return "Name";
}
}

public class C2:C1
{
public override string GetName()
{
return "Value";
}
}

C1 c1 = new C2();

label1.Text = c1.GetName(); //子类已经重写了父类,输出为子类的值Value

public class C1
{
public string GetName()
{
return "Name";
}
}

public class C2:C1
{
public new string GetName()
{
return "Value";
}
}

C1 c1 = new C2();
label1.Text = c1.GetName(); //子类已经仅覆盖了父类,父类的GetName方法仍在,这样调用的是父类的GetName方法,输出为Name

重载是指在一个类中同名,但是参数列表不相同的方法组

如:
public class Test
{
public string GetName(string key)
{
return key;
}

public string GetName(int key)
{
return key.ToString();
}
}

这类的两个方法成为重载方法
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-08
重写:就是继承某一个接口或类后,把接口或类中的方法重定,就是重新写,可以改变父类中的同一个方法中的内容。
重载:就是在一个类中,方法一样,只是需要传入有参数类型不一样
至于覆盖,跟重写差不多吧

.net 覆盖 重写 重载 的区别
重载是指在一个类中同名,但是参数列表不相同的方法组 如:public class Test { public string GetName(string key){ return key;} public string GetName(int key){ return key.ToString();} } 这类的两个方法成为重载方法

关于.net里面重载,重写和覆盖的区别
overload:重载指的是同一个类中有两个或多个名字相同但是参数不同的方法,(注:返回值不能区别函数是否重载),重载没有关键字。override:过载也称重写是指子类对父类中虚函数或抽象函数的“覆盖”(这也就是有些书将过载翻译为覆盖的原因),但是这种“覆盖”和用new关键字来覆盖是有区别的。new:...

帮忙推荐一套.net网站开发面试题,谢谢
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。3、覆盖要求参数列表相同;重载要求参数列表不同。4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调 用时的实参表与形参表来选择方法体的。121.描述一下C#中索引器的实现过程,是否...

VB.NET和VB的区别是什么
重载(MSDN中的说法是“重写”)在VB里实现起来难乎其难,但在VB.NET中则易如反掌;名字空间VB中没有这个概念,VB.NET中则是面向对象的基本概念之一;关键字很多VB的关键字,在VB.NET中消失了(如Set),代以新的关键字,还有部分关键字(如new)则具有了完全不同的意义;一切皆对象VB中并非一切皆...

这里有几道java题,求大神帮忙解答下好吗?非常感谢!
6、都能够表示当前,区别在于super可以调用父类 7、接口和抽象类的区别在于,实现接口的话,必须实现里面所有的抽象方法,而抽象类中可以存在非抽象的方法 8、覆盖就是将原来的方法重新定义重新写,重载区别于覆盖就对了 9、都是抛异常,在这里就不详细解释了。\/抠鼻 ...

.NET面试 笔试的问题 有哪些 ~~
5.override与重载的区别 答 :override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要。6.如果在一个B\/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?答 :t...

C#.net的括号使用问题
一般情况下是使用() 但是 创建cookie的时候 是使用[] 一般数组 也是使用[] 其他了除非是特定的使用[] 一般都是() 以后自然而然你就会明白了 不用迷茫这个问题

.net 怎么用C#获取系统时间 并将其转换成String类型
将此实例的值转换为其等效的长时间字符串表示形式。ToShortDateString 将此实例的值转换为其等效的短日期字符串表示形式。ToShortTimeString 将此实例的值转换为其等效的短时间字符串表示形式。ToString 已重载。已重写。将此实例的值转换为其等效的字符串表示。每个方法都有重载方法,可以有不同的参数。

.NET接口问题,错误提示:“不会实现接口成员” 是什么原因?
IGBook接口的原型是 int AddMessage(); \/\/没有参数的,而你实现的GBook.AddMessage方法有参数,编译不会通过啦!接口改为:\/\/\/ \/\/\/ 接口 IGBook \/\/\/ public interface IGBook { int AddMessage(string UserName,bool Sex,string Email,string Phone,string Titles,int Type,string Content);} ...

asp.net mvc怎样验证表单是否发生更改
若只是提示给用户看,应该考虑由前台脚本来完成这个工作。若必须由后台完成,可以考虑使用捕获的所有字段的值和原有的值是否相等进行判断。可以考虑为待比较的对象重写Equals方法,或重载==操作符。

相似回答