使用类的现有对象初始化对象

时间:2014-01-26 15:37:27

标签: objective-c class inheritance

例如,我们有一个任务初始化一个带有创建对象的类的新对象。

@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 个答案:

答案 0 :(得分:1)

您可以做的是向超类添加自定义方法并在每个子类中覆盖(根据需要调用super)。这可能被称为cloneTo:。您的想法是创建Figure3D的新实例,然后调用:

[myFigure2DInstance cloneTo:myNewFigure3DInstance];

调用superPointx中的y份副本,然后Figure2D中的nameFigure份副本。之后,您可以设置height,并且您有一个闪亮的新配置3D实例。

(这与copy方法使用的逻辑相同,但不创建新实例 - 因为它的类类型错​​误。)