class Person: NSObject {
var name : String?
var age: Int = 0
init(dic: [String:Any]) {
super.init()
setValuesForKeys(dic)
}
//便利构造函数 可能加了?
//可以返回nil前提是一个可失败的构造函数
//只能使用self调用其他构造函数
//不能使用super关键字
//作用:根据外部的参数决定是否创建读写
//便利构造函数默认调用自己的类的构造函数
convenience init?(name : String,age : Int) {
if age < 0 || age > 150 {
return nil
}
//执行到此,年龄合法
self.init(dic:["name":name,"age":age])
}
class Student: Person {
var no : String?
//便利构造函数不能在子类里重写
convenience init?(no: String,name: String,age: Int) {
self.init(name:name,age:age)
//便利构造函数 没有创建对象能力 只能通过调用其他构造函数 完成创建对象能力
self.no = no
}
}