首页 / 软件开发 / .NET编程技术 / [你必须知道的.NET]第十七回:貌合神离:覆写和重载
[你必须知道的.NET]第十七回:貌合神离:覆写和重载2011-03-23 博客园 Anytao本文将介绍以下内容:什么是覆写,什么是重载覆写与重载的区别覆写与重载在多态特性中的应用1.引言覆写(override)与重载(overload),是成就.NET面向对象多态特性的基本技术之一,两个貌似相似而实则不然的概念,常常带给我们很多的误解,因此有必要以专题来讨论清楚其区别,而更重要的是关注其在多态中的应用。在系列中,我们先后都有关于这一话题的点滴论述,本文以专题的形式再次做以深度讨论,相关的内容请对前文做以参考。2.认识覆写和重载从一个示例开始来认识什么是覆写,什么是重载?abstract class Base
{
//定义虚方法
public virtual void MyFunc()
{
}
//参数列表不同,virtual不足以区分
public virtual void MyFunc(string str)
{
}
//参数列表不同,返回值不同
public bool MyFunc(string str, int id)
{
Console.WriteLine("AAA");
return true;
}
//参数列表不同表现为个数不同,或者相同位置的参数类型不同
public bool MyFunc(int id, string str)
{
Console.WriteLine("BBB");
return false;
}
//泛型重载,允许参数列表相同
public bool MyFunc<T>(string str, int id)
{
return true;
}
//定义抽象方法
public abstract void Func();
}
class Derived: Base
{
//阻隔父类成员
public new void MyFunc()
{
}
//覆写基类成员
public override void MyFunc(string str)
{
//在子类中访问父类成员
base.MyFunc(str);
}
//覆写基类抽象方法
public override void Func()
{
//实现覆写方法
}
}