3 本我 7小时前 41次点击
无论是重写成员还是隐藏成员,都可以在派生类的内部访问基类成员。这在许多情况下都是很有用的,例如:
● 要对派生类的用户隐藏继承的公共成员,但仍能在类中访问其功能。
● 要给继承的虚拟成员添加实现代码,而不是简单地用重写的新实现代码替换它。
为此,可使用base关键字,它表示包含在派生类中的基类的实现代码(在控制构造函数时,其用法是类似的,例如:
public class MyBaseClass
{
public virtual void DoSomething()
{
//基础实施
}
}
public class MyDerivedClass : MyBaseClass
{
public override void DoSomething()
{
//派生类实现,扩展基类实现
base.DoSomething();
//更多派生类实现
}
}
这段代码在MyDerivedClass包含的DoSomething()方法中,执行包含在MyBaseClass中的DoSomething()版本,MyBaseClass是MyDerivedClass的基类。因为base使用的是对象实例,所以在静态成员中使用它会产生错误。
示例
namespace 练习a
{
//定义基类
public class MyBaseClass
{
//定义虚方法
public virtual void DoSomething() => WriteLine("基类方法");
}
//定义派生类,他继承字MyBaseClass
public class MyDerivedClass : MyBaseClass
{
//重写基类方法
public override void DoSomething()
{
WriteLine("派生类方法");
//调用重写的基类方法
base.DoSomething();
}
}
class Program
{
static void Main(string[] args)
{
//创建对象
MyDerivedClass myObj = new MyDerivedClass();
//调用MyDerivedClass的方法DoSomething()
myObj.DoSomething();
//按下任意键结束
ReadKey();
}
}
}