一.构造函数
//当一个类实例化一个对象时候,第一个调用的方法
class Student {
//属性
var name = "ser"
let age : Int
//1.重写构造函数
//2.不带外部名的构造器参数
init(){
print("init")
self.age = 111 //在init中 ,改变常量属性
}
//3.构造函数参数的内部名称和外部名称
init(name : String){
print(name)
}
//默认的外部参数名
init(name : String , age : Int){
print(name , age)
}
//指定的外部参数名 及内部参数名
init(name1 a : String , age1 b : Int){
print(a,b)
}
//忽略外部参数名(下划线)
init(_ a :String , _ b :Int){
print(a,b)
}
}
var stu1 = Student.init()
var stu2 = Student.init(name : "xiaoming")
var stu3 = Student.init(name: "aa", age: 100)
var stu4 = Student.init(name1: "bb", age1: 200)
var stu5 = Student.init("cc", 300)
//4.构造过程中 常量属性 的修改
//只能在init方法中修改 常量属性
//5.默认构造器
//6.结构体的成员逐一构造器
struct Point {
var width : Int = 0
}
var point1 = Point.init()
var point2 = Point.init(width: 10)
//7.构造器的继承和重写
class XiaoHong : Student {
override init() {
super.init() //8.构造器的自动继承
print("xiaohong")
}
//析构函数
deinit{
print("deinit")
}
}
var xiaohong = XiaoHong.init() //初始化实例变量时,调用构造函数
//析构函数: 当对象为nil 时候,会调用析构函数
var xiao2 : XiaoHong? = XiaoHong.init()
xiao2 = nil //为空时,此时会调用析构函数