一、构造函数的简介
- 构造函数类似于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
}
网友评论