1. 程式人生 > >抽象類 泛型類的定義31 泛型方法 隱藏方法

抽象類 泛型類的定義31 泛型方法 隱藏方法

         C# 允許把類和函式宣告為abstract。 抽象類不能例項化,抽象類可以包含普通函式和抽象函式,抽象函式就是隻有函式定義沒有函式體。顯然抽象函式本身也是虛擬的Virtual

(只有函式定義 沒有函式體實現)

    類是一個模板,那麼抽象類就是一個不完整的模板,我們不能使用不完整的模板去構造物件。

   當一個類出現抽象方法時,這個類也必須定義成抽象類。

    繼承一個抽象類的時候 ,必須實現抽象方法給出函式體。

    不能用抽象類去構造例項化,但是可以用抽象類去宣告,然後用子類去實力化

             Bird bird =new Cow();   父類宣告 子類實力化

abstract class Bui{

                     punlic avstract decimal CalculateHeatingCost();

_______________________泛型類的定義31

    泛型是 通過引數化型別來實現同一份程式碼上操作多種資料型別,利用引數化型別 將型別抽象化,從而實現靈活的複用。

    當使用的時候構造確定<型別>,  var o1=new Class<int>(21,34); 

      class ClassA<T>{

                  private T a;

                  private T b;

          public ClassA(T a, T b)

             this.a=a; this.b= b;

}

——————————————————————————————————

泛型方法  

  泛型方法也是在初始化的時候確定型別。

      public static T GetSun<T>(T a,T b){

                          return a+""+b;

     }

     GetSum<int>(23,12);

______

     public static string GetSum<T,T1,T2>(T a,T b)  可以定義多個泛型引數,泛型類也同樣可以使用多個變數

   {

    return a+""+b;

   }

 ————————————————————————————

如果簽名相同的方法在基類和派生類中都進行了宣告,但是該方法沒有分別宣告為virtual和override,派生類就會隱藏基類方法。(要使用new關鍵字宣告)

verrride  是重寫 舊的方法就沒了

new  是使父類的方法隱藏了,但是還在

隱藏方法容易引起呼叫的混亂 ,不知道是父類的還是子類的方法,所以很少用

class MyBaseClass{

                   public int MyMethod(){

                      }

}

派生類中

    class MYDerivedClass:MyBaeClass{

                           public new void MyMethod(){

                            }

}