我有一个子类,我希望能够返回其父类(super class)的一个实例。这不起作用:
func baseTransaction()->Transaction {
return super
}
我可以像这样以简单的方式返回基类,还是需要创建一个实例并复制所有适当的属性?过去我就是这么做的,但我想看看是否有更简单的方法。
最佳答案
当您说“返回其父类(super class)的实例”时,我认为您的意思是“将此类实例作为其父类(super class)返回”——在这种情况下,您必须返回实例本身:
func baseTransaction() -> Transaction {
return self
}
如果您有一个 Transaction
类,并创建一个 SubTransaction
子类:
class SubTransaction : Transaction { ... }
然后 SubTransaction
的任何实例也是 Transaction
的实例,因此可分配给 Transaction< 类型的任何变量(或可以作为参数传递的变量)/
。
请注意,子类可以覆盖基类的实现,同时保持相同的接口(interface)(或扩展它)。如果这是您想要避免的,并且您需要基类的真实实例,那么唯一的方法就是创建一个新实例。大概你必须在基类中创建一个复制构造函数,然后使用如下函数获取父类(super class)副本:
func baseTransaction() -> Transaction {
return Transaction(self)
}
关于swift - 如何简单地返回我的基础对象的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26911260/