How to cancel a property in Swift?

advertisements

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
    }
}