2012-06-08 56 views
0

我只是想確保我正在做並正確地考慮繼承和構造函數,如果我有多個子類。我的課程看起來像這樣,Shape是基類和其他派生類繼承在幾個級別

Shape<-----Shape2D<------Box 

此代碼是否正確?它正在工作,但我只是想知道這是否是最好的方法?

public Shape(int inputA, int inputB) 
    { 
     valueA = inputA; 
     valueB = inputB; 
    } 

    public Shape2D(int inputA, int inputB) : base(inputA, inputB) 
    { 

    } 

    public Box(int inputA, int inputB) : base(inputA, inputB) 
    { 

    } 
+1

正如你可以在[這個答案](http://stackoverflow.com/questions/12051/calling-base-constructor-in-c-sharp)中看到的,是的,它是__only__方法來調用一個基礎構造函數 – Steve

回答

1

是的,這對我來說似乎是正確的。

如果您不想在子類中執行任何特殊的初始化,可以將初始化任務委託給層次結構中的基類。在那裏定義的成員變量,所以它可以處理任何需要的初始化。

如果你需要一些特殊的後代,那麼你必須在那裏處理特殊的初始化。但是,除非您需要完全相同的初始化,否則我認爲這是建議的方式。

你在你的問題中想過這個嗎?

1

沒有什麼,從你的代碼示例跳出 - 該鏈接看起來不錯,構建BoxvalueAvalueB預期將得到填充時。

不確定你的意思是「最好的方式」 - 以這種方式鏈接構造是絕對好的。