美文网首页
12 - 基础篇之类的构造函数

12 - 基础篇之类的构造函数

作者: flowerflower | 来源:发表于2018-02-01 21:44 被阅读68次

    一、构造函数的简介

    • 构造函数类似于OC种的初始化方法:init方法
    • 默认情况下载创建一个类时,必然会调用一个构造函数
    • 即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数。
    • 如果是继承自NSObject,可以对父类的构造函数进行重写

    *注意:
    override重写,如果写的某一个方法是对父类方法进行重写,那么必须在该方法前加上override


    二、构造函数的使用

    class Student: NSObject{
            //定义存储属性
        var age: Int = 0
        var name: String?
        //自定义构造函数
        //注意:如果自定义了构造函数,会覆盖init()方法.即不在有默认的构造函数
        init(name: String, age : Int){
            self.name = name
            self.age =  age
        }
        // 重点是 as? as!
        init(dic:[String: AnyObject]){
            let tempName = dic["name"]
            /* tempName 是一个AnyObject? 转成String?
             as? 最终转成的类型是一个可选类型
             as!  最终转成的类型是一个确定的类型
             **/
            name = tempName as? String
            if let tempAge = dic["age"] as? Int{
                age = tempAge
            }
        }    
    }
    
    class ViewController: UIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let p = Student(name: "flowerflower", age: 24)
            print("name = \(p.name!) age= \(p.age)")  //name = flowerflower age= 24
            let p2 = Student(dic: ["name":"flowerflower" as AnyObject,"age":18 as AnyObject])
            
            print("name = \(p2.name!) age= \(p2.age)")  //name = flowerflower age= 18
        }
    

    相关文章

      网友评论

          本文标题:12 - 基础篇之类的构造函数

          本文链接:https://www.haomeiwen.com/subject/crqdzxtx.html