swift5基本语法-初始化器required

338 阅读1分钟

上一节我们一起来学习了下 swift5基本语法-初始化器,初始化器也有对应的关键词required,用required修饰指定初始化器,表明其所有子类都必须实现初始化器(通过继承或者重写实现)。

【 例:】

class Perosn {
    required init() {}
    init(age:Int) {}
}


class Student : Perosn { 
}

如上述示例的代码:

情形 ①: Student 继承 Perosn ,所以也会自动继承父类所有的指定初始化器。也就是说如果Student没有自定义任何指定初始化器,那么将会自动继承 required init() {}init(age:Int) {},如下所示:

01.png

情形 ② : Student 继承 Perosn ,但是Student自定义了初始化器,init(name:String) { super.init(age: 0) },但是会有如下图2的报错.

02.png

因为自定义了初始化器,所以就不能继承Perosn父类的初始化器,所以也需要必须重写required init() {}方法。

正确写法如下所示:

class Perosn {
    required init() {}
    init(age:Int) {}
}

class Student : Perosn {
    init(name:String) {
        super.init(age: 0)
    }

    //required为必要初始化器,override关键字不必要写;
    required init() {
        super.init()
    }
}

【 小结:】 应用场景:required应用在所有子类都必须要实现父类的某个初始化方法,如init(),需要用required修饰。

END.