swift 构造函数(重载)

构造函数--重载

  

 /// 属性就是用来变化的 var
    var name: String
    /// 重写 - 覆盖父类的方法
//    override init() {
//        name = "zhang"
//        
//        super.init()
//    }

     函数重载,OC 中,initWithXXX

     init函数增加参数

     所谓重载,函数名相同,参数类型/个数不同

     父类不存在的方法,本类扩展定义

     如果没有提供任何的构造函数,系统会默认提供一个 () 的构造函数

     如果重写了构造函数,系统提供的 () 构造函数不存在

     构造函数的目的:给本类的属性分配空间/初始化

        - 如果自己重写了构造函数,意味着要给自己的属性初始化

        - () 默认的构造函数,因为没有参数,如果直接调用父类的构造的构造函数

        - 父类方法不能给本类属性初始化

   

init(name: String) {

        self.name = name

        super.init()

    }

var no: String

    /// initWithName: 方法是 Person 定义的

    /// 子类如果要实现此方法,需要 `重写`

    override init(name: String) {

         no = "001"

        super.init(name: name)

    }

    /// 子类的`重载`

    init(name: String, no: String) {

        self.no = no

        super.init(name: name)

    }

 /// Xcode 为了提高性能,会有缓存,如果代码提示不正确,cmd + b

        let p = Student(name: "lisi")

        print("\(p.name) \(p.no)")


你可能感兴趣的:(swift 构造函数(重载))