Swift - 构造函数

2017-01-12  本文已影响145人  汪小喵

构造函数是一种特殊的函数,主要用来在创建兑现是初始化对象,为对象的属性设置初始值也就是OC中的init方法。
1.构造函数基础
Swift中的构造函数是用来对类型实例化的,它可以再实例化过程中给所有的存储型属性设置初始值,为程序提供必要的准备并执行初始化任务。下面是示例代码:

class Person: NSObject {
    var name:String
    var age:Int
    
    override init() {
        name = "汪小喵"
        age = 18
        super.init()
    }
}

let person = Person()
print(person.name)

在这里,我们看到Swift和OC不同的地方是,在OC中我们需要先对父类进行初始化,而在这里,我们先对自己初始化,再初始化父类。

2.重载构造函数
在一个类中可以定义多个构造函数,以便提供不公初始化的方法,供用户选用。这些构造函数具有相同的名字,而参数的个数、名称或类型不相同,这称为构造函数的重载。

class Person: NSObject {
    var name:String
    var age:Int
    
    init(name:String,age:Int){
        self.name = name
        self.age = age
        super.init()
    }
}

let person = Person(name: "汪小喵", age: 20)
print(person.name)

如果重写了构造函数,系统默认提供的构造函数就不能再被访问

3.指定构造函数与便利构造函数
指定构造函数是类中最主要的构造函数。一个指定构造函数将初始化类中提供的所有属性,并根据继承链往上调用父类的构造函数来实现父类的初始化。

init(参数) {
    // 声明
}

便利构造函数是类中比较次要的、辅助性的构造函数。可以定义便利构造函数来调用同一个类中的指定构造函数,并为其参数提供默认值,也可以定义便利构造器来创建一个特殊用途或特定输入值的实例。

convenience init (参数) {
    // 声明
}
class Person {
    var name:String
    init(name:String) {   // 指定构造函数
        self.name = name
    }
    convenience init() {  // 便利构造函数
        self.init(name: "汪小喵")
    }
}
let person1 = Person()
let person2 = Person(name: "喵喵")
print(person1.name, person2.name)
上一篇 下一篇

猜你喜欢

热点阅读