你提到的東西,不過就是初始化過程的串連而已。
以最簡單的建構式初始化來說:
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