C#学习笔记(类的继承、重写)

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;

    }

  }

}

原文地址:https://www.cnblogs.com/DannyShi/p/4475826.html