实例方法是被类型的某个实例调用的方法。
静态方法是被类型本身调用的方法。
定义静态方法的关键字和 静态属性一样,使用 static 关键字。在类中 使用 class 关键字定义的静态方法,可以供子类重写
struct SomeStructure {
static func computedTypeProperty()->Int{ //静态方法
return 10
}
}
enum SomeEnumeration {
static func computedTypeProperty()->Int{
return 60
}
}
class SomeClass{
static func computedTypeProperty()->Int{ //static修饰的静态方法不能被重写
return 270
}
class func overrideableComputedTypeProperty()->Int {
return 1024
}
}
class SubClass: SomeClass{
//子类重写父类的静态方法(使用override关键字来重写)
override static func overrideableComputedTypeProperty()->Int{
return 2048
}
}
访问静态方法
访问静态方法和访问静态属性一样,使用 “类型名.方法名”
print(SomeStructure.computedTypeProperty())
//10
print(SomeEnumeration.computedTypeProperty())
//60
print(SomeClass.computedTypeProperty())
//270
print(SomeClass.overrideableComputedTypeProperty())//调用父类的overrideableComputedTypeProperty 方法
//1024
print(SubClass.overrideableComputedTypeProperty())
//2048
在静态方法体中 self 指的是类型本身而不是类型的某个实例。结构体 和 枚举 可以用 self 来消除 静态属性 和静态方法参数的歧义。