看板 C_Sharp 關於我們 聯絡資訊
你提到的東西,不過就是初始化過程的串連而已。 以最簡單的建構式初始化來說: public class ClassA { protected int numA = 0; public ClassA( int a ) { numA = a; } } public class ClassB : ClassA { protected int numB = 0; public ClassB( int a, int b ) : base( a ) { numB = b; } } ClassB obj = new ClassB( 2, 3 ); ClassB的建構式專注於自己部份numB的初值化, 而把numA的初值化交給ClassA自己去做。 當然,你也可以不透過 :base()的呼叫, 直接在ClassB的建構式中完成numA的初值化。 只是程式設計師都是比較懶惰的,不會做重覆的工作。 Init函式也是相同道理,只是初值化過程的串連。 像這類如骨牌一般串連引發的過程很多地方都可以看到, 比如說滑鼠點擊事件,就可以透過這樣的方式在視窗或頁面上做事件傳遞。 ※ 引述《wa007123456 (大笨羊)》之銘言: : 為什麼某些類別繼承了某類別的話 : 建構式就必須加上 :base(引數) 呢? : 還有就是 : 像是一個初始化函式 : public override void Initialize(){ : base.Initialize(); : } : 這樣也必須使用base呢? : 這樣作是怎麼一回事? -- 對於已經無法擁有的 唯一能做的是 不要忘記 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.125.251.180