一 抽象類和抽象方法
用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 報錯 多型 父類定義乙個方法,讓繼...