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;

    }

  }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM