swift - 如何简单地返回我的基础对象的实例?

标签 swift

我有一个子类,我希望能够返回其父类(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/

相关文章:

ios - 使用 Int,结合 String 打印现有的 String

swift - 从 UIDatePicker 获取日期(没有时间)

ios - 在同一 UILabel 上的两个不同文本之间重复淡入/淡出

ios - 如何从 swift 3 中的核心数据属性(列)中删除特定数据

ios - Swift 中字典对象的 Firebase 实时问题

swift - 如何在 0.3 秒后执行给定次数的 Action ?

swift - 如何使图表始终显示网格线?

ios - 时间分析器不显示功能

swift - 实现命运之轮

ios - Swift - 从 Firestore 检索地理点,如何将它们显示为 map 注释