Swift 是否支持静态 类?

Are static classes supported by Swift?

我想知道您是否可以在 swift 中创建类似于 C# 中的静态 classes,即无法实例化的 class 只能具有静态函数和静态属性。这些类型的 classes 在 swift 中可能吗?

如果没有,根据 Swift 中可用的工具,重新创建此类设计模式的最有效方法是什么?

不,Swift 没有静态 class 的概念。但是,如果您无论如何都没有可分配的属性,那么初始化会有什么不同呢?我可以想到 2 个选项:

  • 将class标记为final,这样就无法继承:final class MyClass { .... }

  • 使用没有继承的structstruct MyUtilities { ... }

您可以通过将初始化器设为私有并在属性前使用 static/class 关键字来获得相同的功能,并且 methods.Using final 关键字确保您的 class 不能被子classed,如果你使用 final,静态方法就没有意义了,因为它们不能被覆盖。

class Bar{
    private init(){}
    static let x = 10

    class func methodA(){
        //do something
    }

    static func methodB(){
        // do something else
    }
}

是的,这是可能的。您只需要将 class 定义为 final 并使构造函数成为 private,例如

final class Test {
   private init() {

   }

   static func hello() {
      print("hello")
   }
 }

 Test.hello()