类class & 结构体struct

这里只是介绍基础,会逐步完善
类calss演示。下边的Person类分别包含了属性、懒存储(懒加载)属性、静态属性、静态方法、实例方法、构造函数、便利构造函数、析构函数。
注意:懒存储属性必须赋值,不能用可选类型。

class Person : NSObject{
    var name:String?
    var age:Int?
    lazy var fatherName:String = "father"
    static var motherName:String?
    static func getMotherName() -> String{
        return motherName!;
    }
    func descriptionPerson(){
        print("我叫\(self.name!),今年\(self.age!)岁")
    }
    init(name:String) {
        self.name = name
    }
    init(name:String,age:Int) {
        self.name = name
        self.age = age
    }
    convenience override init() {
        self.init(name:"s",age:43)
    }
    deinit {
        print("我被析构了")
    }
}

结构体struct:其实结构体跟类是大同小异的,用struct关键字
这里只介绍一下两种类型的不同点

  • 类可以继承,结构体不可以
  • 结构体是复制的方式在代码中传递,类是引用类型(指针你懂得)
  • 创建类的时候属性必须赋初始值,不赋值的话可以使用可选类型。结构体创建的时候不需要赋初始值
  • 结构体有一个默认的构造方法可以给里边的每一个属性赋值,但是赋值顺序必须要跟属性的定义顺序是一样的。类的话只能通过重写构造方法来实现对属性的赋值
    eg:
struct Persons{
    var name:String
    var age:Int
}
let per = Persons(name:"df",age:13)
print(per.name)

你可能感兴趣的:(类class & 结构体struct)