Class Swift:我可以创建一个子类的实例,该子类的类属性引用该类的实例吗?

Class Swift:我可以创建一个子类的实例,该子类的类属性引用该类的实例吗?,class,swift,subclass,Class,Swift,Subclass,在Swift中,我试图创建一个类的子类,该类将添加特定于该类某些实例的属性和方法。我想用一个类的实例初始化一个子类的实例,这样子类实例的类属性实际上引用初始化它的类实例。我的目标是能够在子类实例中设置类属性,并让它在初始化它的类实例中设置相同的属性。即使我将子类实例和类实例的所有类属性设置为相同,我也无法找到一种方法来创建一个初始值设定项来实现这一点。我能够做到这一点的唯一方法是向子类添加一个变量并将其设置为类实例,但这很麻烦。有办法做到这一点吗?您需要添加一个合适的init,如下所示: cla

在Swift中,我试图创建一个类的子类,该类将添加特定于该类某些实例的属性和方法。我想用一个类的实例初始化一个子类的实例,这样子类实例的类属性实际上引用初始化它的类实例。我的目标是能够在子类实例中设置类属性,并让它在初始化它的类实例中设置相同的属性。即使我将子类实例和类实例的所有类属性设置为相同,我也无法找到一种方法来创建一个初始值设定项来实现这一点。我能够做到这一点的唯一方法是向子类添加一个变量并将其设置为类实例,但这很麻烦。有办法做到这一点吗?

您需要添加一个合适的init,如下所示:

class A {
  // ...
}
class B:A {
  init(clone:A) {
    // assign from the other object what needed
  }
}

谢谢你的快速回复。该方法似乎在子类中创建该类的新实例,并且不引用原始类实例。在子类中设置属性似乎不会在原始类实例中设置属性。您只需在新的
B
实例中将实例
clone
保存为(私有)属性即可。我从来都无法实现这一点,我尝试的任何方法都不会指向初始化它的超类实例。我通过在子类中保留一个var并将其设置为超类初始化实例来解决这个问题。这使得代码不那么简单,但它可以工作。