抽象類 泛型類的定義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(){
}
}