Swift基础篇——构造函数

来源:互联网 发布:qq采集软件 编辑:程序博客网 时间:2024/05/22 11:34

构造函数

import Foundation/**    Swift中要求在创建一个类时必须给这个类中所有的属性进行初始化    如果不能在创建对象时给这个类中所有的属性进行初始化, 那么这些属性必须是可选的    如果已经在构造方法中对所有的属性进行了初始化, 那么这些属性就可以不是可选类型    在给某一个类指定属性的数据类型时, 如果该属性是对象类型, 那么可以指定为可选类型    如果该属性不是对象类型而是基本数据类型, 那么建议直接赋值为0*/class Student: NSObject  {    // 注意:如果属性是基本数据类型, 并且是可选类型, 系统不会自动分配存储空间    var name: String?    var score: Double = 0    // 重写构造函数    override init() {        // 注意: 在构造方法中必须先初始化本类再初始化父类        name = "那些年我们一起走过的青春"        score = 100    }    // 自定义构造方法    init(name: String, score: Double) {        self.name = name        self.score = score//        以下这一句代码, 能不写就不写//        super.init()    }    // 使用KVC对象转模型    init(dict: [String: AnyObject]) {        // 注意:Swift中如果想在构造方法中使用KVC转换模型, 必须先调用 super.init()        // 调用 super.init()的目的主要是为了给对象分配存储空间        super.init()        setValuesForKeysWithDictionary(dict)    }    // Swift中打印对象会调用下面这个属性    override var description: String{//        return "name = \(name), score = \(score)"        let property = ["name", "score"]        let dict = dictionaryWithValuesForKeys(property)        return "\(dict)"    }}

测试类

import UIKitclass ViewController: UIViewController {    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {        // 注意: Swift开发中一般情况下不用导入头像文件, 因为只要所有的文件都在一个命名空间中那么就可以直接使用        // 默认情况下一个项目的命名空间就是项目名称, 而在同一个项目下的所有文件都在同一个命名空间中//        let stu = Student(name: "Swift", score: 97)//        let stu = Student()        // 如果自定义一个类, 并且没有重写构造方法, 那么系统会提供默认的构造方法        // 如果自定义一个类, 并且自定义了构造方法, 那么系统不会提供默认的构造方法        let stu = Student(dict: ["name": "longshao","score":"998"])        print(stu.name)        print(stu.score)        print(stu.description)    }}
0 0
原创粉丝点击