例如,我们有一个任务初始化一个带有创建对象的类的新对象。
@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?
答案 0 :(得分:1)
您可以做的是向超类添加自定义方法并在每个子类中覆盖(根据需要调用super
)。这可能被称为cloneTo:
。您的想法是创建Figure3D
的新实例,然后调用:
[myFigure2DInstance cloneTo:myNewFigure3DInstance];
调用super
,Point
和x
中的y
份副本,然后Figure2D
中的nameFigure
份副本。之后,您可以设置height
,并且您有一个闪亮的新配置3D实例。
(这与copy
方法使用的逻辑相同,但不创建新实例 - 因为它的类类型错误。)