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

  • 相关阅读:
    NSPredicate的用法、数组去重、比较...
    CocoaPods安装和使用教程
    UITableView学习笔记
    Linux dpkg 命令
    Linux rpm 软件包管理命令
    Linux chmod 文件权限命令
    Linux vi 命令
    分库分表背后那些事儿
    Spring Cloud Feign原理及性能
    linux "No space left on device" 磁盘空间解决办法
  • 原文地址:https://www.cnblogs.com/daxueshan/p/5585310.html
Copyright © 2020-2023  润新知