【发布时间】:2020-11-11 08:03:19
【问题描述】:
考虑以下代码:
class A {}
class B: A {}
protocol P {
var a: A {get}
}
class P1: P {
let a: A = B() // No problem
}
class P2: P {
let a: B = B() // Can't compile!!
}
既然B 是A 的子类,为什么我们不能将B 作为var a 的返回类型?
【问题讨论】:
-
我相信这是因为您的协议有一个 var 或类型 A 而不是 B,而 B 是 A 的子类。所以,P2 不知道 B 是什么类型。
-
尊敬的 PO,您的问题现在一切都清楚了吗?
-
我认为这是 Swift 的约束。在 Scala、Java 和 Kotlin 等其他语言中,
P2中的声明是可以的。
标签: swift inheritance swiftui subclass return-type