swift -- 构造/析构函数

 一.构造函数

//当一个类实例化一个对象时候,第一个调用的方法

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( 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  //为空时,此时会调用析构函数

原文地址:https://www.cnblogs.com/daxueshan/p/5585310.html