C#学习--类的继承、重写

时间:2021-04-16

  1 隐藏基类的方法

  当基类继承一个(非抽象的)成员时,也就继承了其实现代码。如果继承的成员是虚拟的,就可以用override关键字重写这段实现代码。无论继承的成员是否为虚拟,都可以隐藏这些代码。

  使用下面的代码就可以隐藏:

public class MyBaseClass

{

  public void DoSomething()

  {

    //Base implementation.

  }

  public class MyDerivedClass : MyClass

  {

    public void DoSomething()

    {

      //Derived class implementation, hide base implementation.

    }

  }

}

  尽管这段代码可以正常运行,三十会产生一个警告,说明隐藏了一个基类成员。如果是无意间隐藏了一个需要使用的成员,此时就可以改正错误。如果确实要隐藏该成员,就可以使用new关键字显式的表明意图:

public class MyDerivedClass : MyBaseClass

{

  new public void DoSomething()

  {

    //Derived class implementation,hide base implementation.

  }

}

  其工作方式是完全相同的,但是不会出现警告。此时应该注意隐藏基类成员和重写他们的区别。考虑下面的代码:

public class MyBaseClass

{

  public vritual void DoSometing()

  {

    Console.WriteLine("Base imp");

  }

}

public class MyDerivedClass : MyBaseClass

{

  public override void DoSomething()

  {

    Console.WriteLine("Derived imp");

  }

}

  实现如下:

MyDerivedClass myObj = new MyDerivedClass();

MyBaseClass myBaseObj;

myBaseObj = myObj;

myBaseObj.DoSomething();

  输出结果:

Derived imp

  2 this关键字

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

  this关机那字最常用的功能就是把当前对象实例的引用传递给一个方法。

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

public class MyClass

{

  private int someData;

  public int SomeData

  {

    get

    {

      return this.someData;

    }

  }

}

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章