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方法可以被子类继承。
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