首页 > 其他 > 详细

父类的反初始化方法可以被子类继承

时间:2021-05-14 15:49:56      阅读:10      评论:0      收藏:0      [点我收藏+]

父类的反初始化方法可以被子类继承

class Person {
    deinit {
        print("peson dinit")
    }
}

class Student: Person {}

func test() {
    var stu = Student()
}

test()

peson dinit
Program ended with exit code: 0

Student 类继承自父类 Person ,当test方法调用完成后,stu就会被销毁,可以看到,调用了父类Person中的deinit 方法,所以,父类的deinit方法可以被子类继承。

Person 与Person.self

class Person {
    //一个类型属性和一个类型方法(类属性和类方法)
    static var age = 0
    static func run() {}
}

//调用
Person.age = 10
Person.run()

//同等调用
Person.self.age = 10
Person.self.run()
//初始化实例对象
var p0 = Person()
var p1 = Person.self()
var p2 = Person.init()
var p3 = Person.self.init()
/**
 Person 是类,是类型
 Person.self 是这个类的类型,元类类型
 大多数情况是可以通用的
 只有当确切要表达是元类类型的时候不可通用
 */
//此时,Person.self 不能用Person代替
var ptype :Person.Type = Person.self
var p5 = Person.self

//需要元类类型作为参数时,也就是明确需要表达的是元类类型时,不能替代
func test(_ cls:AnyClass) {}   

父类的反初始化方法可以被子类继承

原文:https://www.cnblogs.com/UncleX/p/14768223.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!