我正在尝试通过遵循不同的教程来学习Swift,但我遇到了一个问题。我有以下代码:
Class Vehicle {
var seats = 5
var maxSpeed = 100
}
class Bike : Vehicle{
override var seats = 3
}
但是我一直收到有关尝试覆盖var seats
的错误,并声明Cannot override with a stored property 'seats'
。
我做错了什么?我以为我可以覆盖继承的变量?
答案 0 :(得分:4)
您实际上不需要覆盖该属性,只需使用其他值进行初始化,这可以在初始化程序中完成:
class Vehicle {
var seats = 5
var maxSpeed = 100
}
class Bike : Vehicle{
override init() {
super.init()
self.seats = 3
}
}
至于重写属性,lang reference表示:
您可以覆盖继承的实例或类属性,为该属性提供自己的自定义getter和setter,或添加属性观察器以使覆盖属性能够在基础属性值更改时进行观察。