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

2018-02-01  本文已影响68人  flowerflower

一、构造函数的简介

*注意:
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
    }
上一篇 下一篇

猜你喜欢

热点阅读