1. 程式人生 > >抽象方法抽象類 靜態類靜態方法靜態成員

抽象方法抽象類 靜態類靜態方法靜態成員

一 抽象類和抽象方法

用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("拜拜了您哪");

}

}