调用重写或隐藏的基类方法

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();

}

}

}


目前还没有评论
添加一条新评论

登录后可以发表评论 去登录