在swift中,如果类B继承自类A,如何在类B中访问类A的方法?

时间:2017-10-31 09:49:35

标签: swift unit-testing

创建模拟类,方法和协议的示例会很有帮助。

1 个答案:

答案 0 :(得分:0)

有十几次回答。以下是我对同等主题给出的一个答案的摘录,略有调整。

如果你的课程 B 来自 A ......

class ClassA: UIViewController {
    func myFunc() { print("...") }
}

class ClassB: ClassA {

}

在课程 B 中,您可以通过输入

从类 A 调用方法
super.myFunc() **OR** self.myFunc()

...取决于您是否在使用override关键字的子类中重新实现了该方法。如果您没有 override它(并且您不一定非必须),那么这两个调用是等效的。

另一方面,如果您在 B

中添加了自己的实现
override func myFunc() {
    print("My implementation of myFunc")
}

致电super.myFunc()将从 A 调用实施。调用self.myFunc()将调用您的本地实现,两者都可以从您的子类中接受。当你的子类也调用super时:

override func myFunc() {
    super.myFunc()
    print("My implementation of myFunc")
}

从子类调用self.myFunc()将从两者调用实现。请记住,如果您未在override方法中调用超类实现,则替换此实现。

在大多数UI - 类中,强烈建议在覆盖时调用超类方法,以避免任何异常行为,除非您自己提供足够的实现(例如重新定位或绘制元素)。

P.S。模拟和单元测试是一个完整的主题,根本不可能在单个帖子中覆盖。请学习!