2014-01-26 65 views
0

初始化對象例如,我們有一個任務使用早先創建的對象初始化類的新對象。使用現有對象類

@interface Point 
{ 
    float x; 
    float y; 
} 
@interface Figure2D:Point //for example it can be a foursquare 
{ 
    NSString* nameFigure; 
} 
@interface Figure3D:figure2D //it will be a cube 
{ 
    float height; 
} 

下一步它是從廣場創建立方體。 據我瞭解,我們必須創建這樣

+newFigure3dFromFigure2D:(Figure2D*)_figure2D 
        height:(float)_height; 

的方法是否有可能在新的一個對象複製或將其轉換爲Figure3D?

回答

1

您可以做的是將自定義方法添加到超類中並覆蓋每個子類(根據需要調用super)。這可能被稱爲cloneTo:。您創建您的Figure3D的新實例,然後調用這個想法是:

[myFigure2DInstance cloneTo:myNewFigure3DInstance]; 

調用superPoint副本在xy,然後在nameFigureFigure2D副本。之後,你可以設置height,你有一個閃亮的新的配置3D實例。

(這與copy方法使用的邏輯相同,但不創建新實例 - 因爲它將是錯誤的類類型)。

+0

'code'-initWithFiguire2D:(Figure2D *)_圖 { 如果((個體= _figure2D)) } 'code' 它是一個正確的嗎? – user2185412

+0

要做什麼?你可以有一個調用'clone:'的init方法。不知道你的'if'陳述是關於/爲/正在做什麼的。 – Wain

+0

hmm。我試圖繼續我的實現initWithClass: 我試試你的複製方法。 – user2185412