美文网首页
iOS开发 - 「Swift 学习」Swift继承(重写属性观察

iOS开发 - 「Swift 学习」Swift继承(重写属性观察

作者: 俺不是大佬儿 | 来源:发表于2022-02-26 14:50 被阅读0次

重写属性观察器

在属性重写中为一个继承来的属性添加属性观察器,当继承来的属性发生改变时就可以监测到

注意:
不可以给继承来的常量存储属性或者继承来的只读计算型属性添加属性观察器

//父类
class Circle {
    var radius = 12.5
    var area: String {
        return "矩形半径 \(radius) "
    }
}

// 继承父类 Circle
class Rectangle: Circle {
    var print = 7
    //重写area属性
    override var area: String {
        return super.area + " ,但现在被重写为 \(print)"
    }
}

class Square:Rectangle {
    //重写父类Circle的radius属性
    override var radius: Double {
        //监测radius属性有新值后对父类Rectangle中的print属性赋新值
        didSet {
            print = Int(radius/5.0)+1
        }
    }
}

调用

func overridePropertyStudy(){
    let rect = Rectangle()
    rect.radius = 25.0
    rect.print = 3
    print("Radius \(rect.area)")
    
    let sq = Square()
    sq.radius = 60.0
    print("半径:\(sq.area)")
}

调用结果

Radius 矩形半径 25.0  ,但现在被重写为 3
 
半径:矩形半径 60.0  ,但现在被重写为 13

防止重写

使用 final 关键字防止继承属性被子类重写
如果重写了final方法,属性或下标脚本在编译时会报错

可以通过在关键字class声明的类前添加final关键字(final class)将整个类标记为final防重写类,这样标记的类是不可以被继承,会报编译错误

final标记class继承报错

\color{gray}{欢迎大佬儿来指正纠错,共同学习😏!!}

相关文章

  • iOS开发 - 「Swift 学习」Swift继承(重写属性观察

    重写属性观察器 在属性重写中为一个继承来的属性添加属性观察器,当继承来的属性发生改变时就可以监测到 注意:不可以给...

  • Swift基于PropertyWrapper实现值类型KVO

    背景 iOS开发对于继承NSObject的类型可以通过原生的observe方法实现属性观察,但在Swift开发时大...

  • Swift 5.x - 初始化(中文文档)

    引言 继续学习Swift文档,从上一章节:继承,我们学习了Swift继承相关的内容,如继承的作用、重写父类的方法和...

  • Swift 5.1 (10) - 属性

    级别: ★☆☆☆☆标签:「iOS」「Swift 5.1」「存储属性」「计算属性」「属性观察」作者: 沐灵洛审校: ...

  • iOS开发 - 「Swift 学习」Swift继承(重写方法和属

    没有继承其它类的类叫基类,在已有类的基础上创建的一个新类就是子类,被继承的类就是父类(或超类) 类继承的语法表示:...

  • iOS复习之重写与重载

    iOS面向对象的三大特征 封装、继承、多态 Swift-重写与重载的使用和比较

  • Swift 5.1 (13) - 继承

    继承 继承是一种基本行为:子类继承父类方法,属性和其他特性。子类可以重写父类的方法,属性。继承将类与Swift中的...

  • swift属性观察器

    OC里面可以重写属性的get和set方法,swift里没有对应的写法,但有属性观察器属性观察器会监控和响应属性值变...

  • swift开发UI控件之UILabel

    现在iOS开发市场上很多程序员都在使用swift开发,以后swift也将是主流,所以最近我也在学习swift开发,...

  • Swift学习散记 1

    标签(空格分隔): iOS开发 Swift Swift已经更新到3.0了,是时候开始学习一下Swift了...

网友评论

      本文标题:iOS开发 - 「Swift 学习」Swift继承(重写属性观察

      本文链接:https://www.haomeiwen.com/subject/wfgolrtx.html