我在这里做错了什么?
class NamedShape {
var numberOfSides: Int = 0
var name: String
init(name: String) {
self.name = name
}
func simpleDescription() -> String {
return "A shape with \(numberOfSides) sides."
}
}
class Circle: NamedShape{
var radius: Double
// Here it says:"Cannot override with a stored property ‘name':
var name: String
init(radius: Double, name: String) {
self.radius = radius
super.init(name: name)
}
func area(radius: Double) ->Double{
var area: Double = radius * radius * 3.14
return area
}
override func simpleDescription() -> String {
// Here it says that 'name' is ambiguous:
return "A circle by the name of \(name)with the area of \(area(radius))"
}
}
let test = Circle(radius:5.1,name: myCircle)
答案 0 :(得分:3)
我不是Swift的专家,但看起来你正在定义子类(Circle)的另一个属性,它恰好被称为与其超类(NamedShape)中的属性相同的名称。
你的NamedShape
的整个想法似乎应该是存储名称的类。那么为什么不跳过子类中的属性name
呢?我的意思是,删除第一个错误的行。
别担心。您仍然可以在子类中引用name
。这就是定义Circle
以扩展NamedShape
的全部要点。