构造方法的使用
import Foundation
/*
继承与构造方法:
指定构造与便利构造方法
*/
class Person {
var name:String
var age:Int
// 指定构造方法都是以init开头的
init(name:String, age:Int)
{
self.name = name
self.age = age
}
// 如果是值类型没问题, 称之为构造器代理
// 但如果是引用类型会报错, 需要在前面加上convenience关键字
// 被convenience关键字修饰的构造方法称之为便利构造器, 通过调用其它构造方法来初始化
// 反而言之, 便利构造器中一定是调用其它构造方法初始化的, 一定要出现self.init
convenience init()
{
// self.name = "Swift"
// self.age = 30
self.init(name:"Swift", age:30)
}
// 类可以拥有多个构造方法
init(name:String)
{
self.name = name
self.age = 0
// 不能在指定构造方法中调用便利构造方法
// 也就是说指定构造方法中不能出现self.init
// self.init()
}
convenience init(age:Int)
{
// 可以在便利构造器中调用指定构造器
// self.init(name:"Swift", age:30)
// 可以在便利构造器中调用便利构造器
self.init()
}
// 便利构造器不能和指定构造器同名
// convenience init(name:String)
// {
// }
}
/*
派生类的构造方法
*/
class Man {
var name:String
// 指定构造方法
init(name:String){
self.name = name
}