类的初始化规则
类的初始化规则1. 无父类,有默认值
class Person {
var name :String?
var age :Int=0
}
所有属性都有默认值时,可以有类的初始化方法,也可以不实现类的初始化方法。
当不实现类的初始化方法时,编译器会提供默认的初始化方法,构造生成的实例的每个属性的值都为默认值。
2. 无父类,无默认值
class Person {
var name : String
var age : Int
init () {
name = ""
age = 0
}
}
必须实现指定的构造方法
3. 有父类,无初始值
class Person : NSObject {
var name : String
var age : Int
init (name:String) {
self.name = name
self.age = 0
super.init();
}
}
指定构造器必须调用其直接父类的的指定构造器
class Person : NSObject {
var name : String
var age : Int
override init () {
self.name = ""
self.age = 0
super.init()
}
}
子类也可复写父类的构造方法,
但是调用父类的designed方法前,必需初始化子类所有属性的值
当子类有便利构造方法时,必须要调用designed构造方法
class Person : NSObject {
var name : String
var age : Int
init(name:String, age:Int) {
self.name = name;
self.age = age;
super.init()
}
convenience init (name:String) {
self.init(name:name,age:0);
}
convenience init(age:Int) {
self.init(name: "Mingming",age:age)
}
}
网友评论