首页 > 软件操作教程 > 编程开发 > C#
题目内容

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

题目答案

无论是重写成员还是隐藏成员,都可以在派生类的内部访问基类成员。这在许多情况下都是很有用的,例如: 

    •要对派生类的用户隐藏继承的公共成员,但仍能在类中访问其功能。

    •要给继承的虚拟成员添加实现代码,而不是简单地用重写的新实现代码替换它。

为此,可使用base关键字,它表示包含在派生类中的基类的实现代码(在控制构造函数时,其用法是类似的),例如:

public class MyBaseClass 

{

    public virtual void DoSomething()

    {

        // Base implementation.

    }

}

public class MyDerivedClass : MyBaseClass 

{

    public override void DoSomething()

    {

        //Derived class implementation, extends base class implementation.

        base.DoSomething();

        // More derived class implementation.

    }

}

这段代码在MyDerivedClass包含的DoSomething()方法中,执行包含在MyBaseClass中的DoSomething()版本,MyBaseClass是MyDerivedClass的基类。因为base使用的是对象实例,所以在静态成员中使用它会产生错误。


this关键字

    与base—样,this也可以用在类成员的内部,且该关键字也引用对象实例。只是this引用的是当前的对象实例(即不能在静态成员中使用this关键字,因为静态成员不是对象实例的一部分)。

    this关键字最常用的功能是把当前对象实例的引用传递给一个方法,如下例所示:

public void doSomething()

{

    MyTargetClass myObj = new MyTargetClass(); 

    myObj.DoSomethingWith(this);

}

    其中,被实例化的MyTargetClass实例(myObj)有一个DoSomethingWithO方法,该方法带有一个参数,其类型与包含上述方法的类兼容。这个参数类型可以是类的类型、由这个类继承的类类型,或者由这个类或 System.Object实现的一个接口。

    this关键字的另一个常见用法是限定局部类型的成员,例如:

public class MyClass 

{

    private int someData;

    public int SomeData => this.someData;

许多开发人员都喜欢这个语法,它可以用于任意成员类型,因为可以一眼看出引用的是成员,而不是局部变量。

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

软件操作 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

相关视频试题

最需教育客户端 软件问题一手掌握

去 App Store 免费下载 iOS 客户端