I have this Class and a subclass, from the Swift tutorial. Sadly the tutorial doesn't mention how to override a property. My first test failed miserably:
// generic shape
class Shape {
var numberOfSides = 0
var name: String
init(name: String) {
self.name = name
}
func simpleDescription() -> String {
return self.name + " with \(numberOfSides) sides."
}
}
// creating a subclass and reset the property
class Triangle: Shape {
// this doesnt work
override var numberOfSides = 3
// this also doesnt work
var numberOfSides = 3
// and this doesnt work either
numberOfSides = 3
// this works
override func simpleDescription() -> String {
return "Triangle name: " + self.name + " number of sides: \(numberOfSides)"
}
}
var blurgh = Triangle(name: "supertriangle")
println(blurgh.simpleDescription())
So what is the correct way to set a property on a subclass?
In your example you don't want to override the property you just want to change it value. The best way to do that is init method:
init(name: String) {
super.init(name: name)
numberOfSides = 3
}
To override property you should make some change to it getter or setter method, for example:
override var numberOfSides {
get {
return super.numberOfSides
}
set {
super.numberOfSides = newValue + 10
}
}