美文网首页
Swift十 (一: 多态汇编原理? 二: final函数 三

Swift十 (一: 多态汇编原理? 二: final函数 三

作者: 看谷秀 | 来源:发表于2022-05-04 11:27 被阅读0次

    一: 多态汇编原理?
    二: final函数
    三: 初始化器
    四: 重写override
    五: 自动继承

    一:多态汇编原理?
    二: final函数

    // 类禁止被集成 方法, 属性禁止被重写(下标本质是函数)


    截屏2022-05-03 下午1.04.40.png
    三: 初始化器
    截屏2022-05-03 下午1.49.26.png

    // 注意: 初始化准则是,保证每一个存储属性都要有值

    "每个类至少有一个指定初始化器, 指定初始化器是类的主要初始化器"
    // 每个类的默认的指定初始化器就是 init(), 重写了指定初始化器则覆盖 size类, 默认init()


    截屏2022-05-03 下午1.19.32.png

    // 自定义初始化器之后, 默认生成的就被覆盖了


    截屏2022-05-03 下午1.19.58.png

    "便捷初始化器必须从相同的类里调用另一个初始化器"
    // 便捷初始化器必须调用指定初始化器, 保证每个成员变量都有值


    截屏2022-05-03 下午1.46.15.png

    // 子类的指定初始化器必须调用父类的指定初始化器

    "指定初始化器必须从他的直系父类调用指定初始化器" 子类student指定初始化器, 必须调用父
    类Person的指定初始化器init(age: Int)
    // 类自己的便捷初始化器, 必须调用当前类的指定初始化器


    截屏2022-05-03 下午6.04.18.png

    "便捷初始化器最终必须调用一个指定初始化器"
    // 间接调用也可以


    截屏2022-05-03 下午6.10.32.png

    官方指定初始化器, 便捷初始化器流程图


    截屏2022-05-03 下午6.37.05.png

    两段初始化
    // 关于子类自定义初始化器, 和父类自定义初始化器关系梳理


    截屏2022-05-04 上午10.47.00.png

    // 第一阶段从下往上 子类-->父类
    // 第一阶段 Student调用便捷调用指定初始化器, 指定初始化器保证当前类的存储属性都初始化, score, 然后调用父类的指定初始化器, 依次保证保证子类, 父类所有村塾属性都初始化


    截屏2022-05-04 上午10.49.05.png
    // 第二阶段从上往下 父类-->子类
    截屏2022-05-04 上午10.57.49.png

    安全检查
    子类调用父类的指定初始化器, 需要保证自己的存储属性初始化完毕


    截屏2022-05-04 上午11.05.24.png
    class Animal {
        var age: Int = 0
        func eat() {
            print("animal---eat")
        }
        init(age: Int) { // 指定初始化器
            self.age = age
        }
    }
    
    class Dog: Animal {
        var name: String = ""
        init(name: String) { // 指定初始化器
    //        self.name = name
            super.init(age: 5)
            self.name = name // 这里调用是因为上面存储属性有默认值, 否则智能写在super上面
        }
        let dog = Dog(name: "旺财")
    }
    
    四: 重写override
    截屏2022-05-04 上午11.15.57.png

    // 重写父类的指定初始化器, 不管当前类用指定初始化器重写, 还是便捷初始化器重写, 都需要override


    截屏2022-05-04 上午11.18.49.png
    五: 自动继承

    // 子类不仅能继承父类的方法, 属性等, 指定初始化器也能继承
    但是子类默认的 init() 就被覆盖了, 除非你自己定义


    截屏2022-05-04 上午11.26.03.png

    相关文章

      网友评论

          本文标题:Swift十 (一: 多态汇编原理? 二: final函数 三

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