美文网首页
swift static func 和 class func的区

swift static func 和 class func的区

作者: IMKel | 来源:发表于2024-08-06 15:34 被阅读0次

static func 和 class func 都用于定义类型级别的方法(即类方法),但它们在继承行为方面存在差异。以下是它们的区别和使用场景:

static func

  • 定义
    static func 用于定义一个静态方法,这个方法不能被子类重写。它属于类本身,而不是类的实例。

  • 特点
    不能被重写:子类不能重写使用 static func 定义的方法。
    类型方法:只能通过类型(而不是实例)调用。

示例

class ParentClass {
    static func staticMethod() {
        print("This is a static method.")
    }
}

class ChildClass: ParentClass {
    // Cannot override static method
    // override static func staticMethod() {} // This will cause a compilation error
}

// Usage
ParentClass.staticMethod() // Prints: This is a static method.

class func

  • 定义
    class func 用于定义一个类方法,这个方法可以被子类重写。它同样属于类本身,而不是类的实例。

  • 特点
    可以被重写:子类可以重写使用 class func 定义的方法。
    类型方法:只能通过类型(而不是实例)调用。

  • 示例

class ParentClass {
    class func classMethod() {
        print("This is a class method.")
    }
}

class ChildClass: ParentClass {
    override class func classMethod() {
        print("This is an overridden class method.")
    }
}

// Usage
ParentClass.classMethod() // Prints: This is a class method.
ChildClass.classMethod() // Prints: This is an overridden class method.

区别总结

  • 继承行为:
    static func 定义的方法不能被子类重写。
    class func 定义的方法可以被子类重写。

  • 用法:
    static func 适用于那些不希望子类重写的方法,通常用于工具类方法或类级别的常量。
    class func 适用于那些希望子类能够提供具体实现的方法,通常用于需要多态行为的方法。

相关文章

网友评论

      本文标题:swift static func 和 class func的区

      本文链接:https://www.haomeiwen.com/subject/fbnfkjtx.html