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

2021-08-22 13:42:57 字數 1671 閱讀 5109

一 抽象類和抽象方法

用abstract修飾的方法稱為抽象方法

含有抽象方法的類必須定義為抽象類

只是當做派生類的基類來使用

抽象的特徵:

抽象方法只做宣告,不能包含具體實現

抽象方法旨在被繼承之後使用,所以不能用

private來修飾

2,抽象類不能被直接例項化(不能用new建立)

3,抽象類可以沒有抽象成員,但是抽象成員

只能在抽象類中

4,如果抽象類的子類不是抽象類,那麼必須要實現

該抽象類中的所有的抽象方法,如果子類是抽象類,

可以重寫也可以不重寫

抽象方法和虛方法的區別:

抽象方法是特殊的虛方法

1,抽象方法必須在抽象類

2,抽象方法在類中不能有實現體,虛方法必須有

3,抽象方法在非抽象子類中必須被重寫,而虛方法在子類中可以實現

也可以不重寫

= "小公尺";

"香蕉");

二,靜態成員

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

抽象類中定義靜態方法

一直認為抽象類不能例項化,所以就沒有想過用直接呼叫方法,而是例項化它的子類,用子類呼叫方法,沒想到啊,在抽象類中定義static方法不就可以了嗎,static方法屬於類,不需要例項化。using system using system.reflection namespace abstractfac...

抽象類中定義靜態方法

一直認為抽象類不能例項化,所以就沒有想過用直接呼叫方法,而是例項化它的子類,用子類呼叫方法,沒想到啊,在抽象類中定義static方法不就可以了嗎,static方法屬於類,不需要例項化。using system using system.reflection namespace abstractfac...

typescript靜態方法和抽象類

靜態方法 class person study 在學習 eat 在吃飯 static sayhello var p new person tom p.study 呼叫例項方法 person.sayhello person.name 不報錯 person.hello 報錯 多型 父類定義乙個方法,讓繼...