抽象方法抽象類 靜態類靜態方法靜態成員
一 抽象類和抽象方法
用abstract修飾的方法稱為抽象方法
含有抽象方法的類必須定義為抽象類
使用場景: 為了描述抽象的概念,不予具體的事物相關聯
只是當做派生類的基類來使用
抽象的特徵:
抽象方法只做宣告,不能包含具體實現
抽象方法旨在被繼承之後使用,所以不能用
private來修飾
2,抽象類不能被直接例項化(不能用new建立)
3,抽象類可以沒有抽象成員,但是抽象成員
只能在抽象類中
4,如果抽象類的子類不是抽象類,那麼必須要實現
該抽象類中的所有的抽象方法,如果子類是抽象類,
可以重寫也可以不重寫
抽象方法和虛方法的區別:
抽象方法是特殊的虛方法
1,抽象方法必須在抽象類
2,抽象方法在類中不能有實現體,虛方法必須有
3,抽象方法在非抽象子類中必須被重寫,而虛方法在子類中可以實現
也可以不重寫
//Person.name = "小米";
//Person.Eat("香蕉");
二,靜態成員
1,用static 關鍵字修飾的成員 只能由類來呼叫
函式所有行為對派生類的影響都一致的時候,可以定義為靜態的
靜態成員就相當於一個帶有名稱空間的全域性函式
不需要例項化 而且不需要this指標,和例項(物件)無關
呼叫方便,加強肋的安全性 可以封裝演算法 當做工具來使用
有助於實現一些設計模式有助於封裝
靜態類
同static修飾的類
靜態類中只能包含靜態成員和construction修飾的常量
靜態類不能例項化
靜態類預設密封,不能用sealed修飾
不能被繼承
有 靜態構造方法,但靜態狗仔方法必須是無參的
該方法第一次使用靜態類呼叫靜態成員時會執行
Student.name = "狗賊";
Student.study();
Console.WriteLine("num");
靜態構造方法
可以用來初始化靜態成員資料,或用於只執行一次的特定操作
在建立一個例項,第一次使用靜態成員時,自動執行
不帶 訪問修飾符,不帶引數
不能過載
里氏轉換
as ( )
部分程式碼
abstract class A
{
public abstract void Mi();
}
abstract class B : A
{
public abstract void ni();
}
class C : B
{
public override void Mi()
{
throw new NotImplementedException();
}
public override void ni()
{
throw new NotImplementedException();
}
}
class Beauty
{
public static int age;
public static void Buy()
{
Console.WriteLine("大仙");
}
}
public sealed class time
{
public static int firsttime;
static time()
{
firsttime = 5;
Console.WriteLine("拜拜了您哪");
}
}