When I override the function noise, the function gets replaced by the new one. But when I override a property with an observer, the old and new value gets both executed.
In playground:
class Vehicle {
    func noise(sound: String) {
        println("Vehicle sound sounds like \(sound)")
    }
}
class Train: Vehicle {
    override func noise(sound: String) {
        println("A train does: \(sound)")
    }
}
Output:
var oldTrain = Train()
bulletTrain.noise("tjoek tjoek") // Prints: "A train does: tjoek tjoek"
But when I do the same with an property with an observer:
In playground:
class Foo {
    var something: Int! {
        didSet {
            println("vroom")
        }
    }
}
class Bar: Foo {
    override var something: Int! {
        didSet {
            println("toot toot")
        }
    }
}
Output:
var foobar = Bar()
foobar.something = 3 // Prints: "vroom" & "toot toot"
So how am I supposed to override a property with an observer and how to prevent the old values to be executed as well?