【发布时间】:2016-03-08 15:01:16
【问题描述】:
假设这三个类具有这种简单的层次结构:
class A {
func foo() {
print("A")
}
}
class B: A {
override func foo() {
super.foo()
print("B")
}
}
class C: B {
override func foo() {
// *******
print("C")
}
}
在 C 类中,在重写方法 foo 我想调用一个方法 foo: 可以吗?
在 C++ 中,这可以通过 C->A::foo() 来实现,但在 Swift 中如何做到这一点?
【问题讨论】:
-
super.super.foo(). -
我试过
super.super.foo(),但它没有编译 -
是我尝试的第一件事,但没有成功!
-
这是故意隐藏的。在任何健全的对象架构中,
C绝对不需要访问A的原始声明 -
顺便说一句,在 C++ 中这可能是由于多重继承。
super在 C++ 中是不够的,所以他们必须允许明确指定基类。使用已被超类覆盖的实现似乎是一个非常非常糟糕的主意。
标签: swift inheritance