美文网首页
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