我有课要上。以及它的子类B。我需要重写它的属性类型。此外,更改协议也是可以的。我该怎么做呢?
class A {
var property: String (or SomeProtocolA)
}
class B: A {
var property: Int (or SomeProtocolB)
}
也许有可能为子类中的属性添加第二个支持协议?
发布于 2016-06-17 03:57:07
你不能,这是一个糟糕的设计。
假设A类有一个函数:
class A {
var property: String (or SomeProtocolA)
func getMyString() -> String {
return property
}
}
现在B类继承了它,同时“覆盖”了property
class B : A {
var property: Int(or SomeProtocolB)
// func getMyString() -> String { //inherited from superclass
// return property //type error, expected String, returning Int
//}
}
发布于 2016-06-17 04:05:08
您可以这样做,但在的非常有限的情况下。允许这样做的唯一方式是在以下情况下:
get
。struct
、protocol
或下面是一个使用字符串覆盖的示例:
class A {
var property: NSString {
return ""
}
}
class B: A {
override var property: NSMutableString {
return NSMutableString(string: "")
}
}
https://stackoverflow.com/questions/37868025
复制相似问题