苹果公司推出的新编程语言Swift简介和入门教程

2020-01-08 22:32:28于海丽

    }
}

 


使用deinit进行清理工作。

4.2继承和多态

Swift支持继承和多态(override父类方法):

复制代码
class Square: NamedShape {
    var sideLength: Double
    init(sideLength: Double, name: String) {
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 4
    }
    func area() -> Double {
        return sideLength * sideLength
    }
    override func simpleDescription() -> String {
        return "A square with sides of length (sideLength)."
    }
}
let test = Square(sideLength: 5.2, name: "my test square")
test.area()
test.simpleDescription()

 

注意:如果这里的simpleDescription方法没有被标识为override,则会引发编译错误。

4.3属性

为了简化代码,Swift引入了属性(property),见下面的perimeter字段:

复制代码
class EquilateralTriangle: NamedShape {
    var sideLength: Double = 0.0
    init(sideLength: Double, name: String) {
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 3
    }
    var perimeter: Double {
    get {
        return 3.0 * sideLength
    }
    set {
        sideLength = newValue / 3.0
    }
    }
    override func simpleDescription() -> String {
        return "An equilateral triagle with sides of length (sideLength)."
    }
}
var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle")
triangle.perimeter
triangle.perimeter = 9.9
triangle.sideLength

 


注意:赋值器(setter)中,接收的值被自动命名为newValue。

4.4willSet和didSet