Swift是否支持静态类?

时间:2017-03-21 18:45:52

标签: swift static-classes

我想知道你是否可以在swift中创建类似于C#中的静态类,即一个无法实例化的类,它只能有静态函数和静态属性。这些类型的课程是否可以迅速实现?

如果没有,给定Swift中可用的工具,重建这种设计模式的最有效方法是什么?

3 个答案:

答案 0 :(得分:5)

是的,这是可能的。您只需将您的类定义为final并制作构造函数private,例如

final class Test {
   private init() {

   }

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

 Test.hello()

答案 1 :(得分:4)

不,Swift没有静态类的概念。但是如果你还没有可分配的属性,初始化会有什么不同?我可以想到两个选项:

  • 将该类标记为final,因此无法继承该类:final class MyClass { .... }

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

答案 2 :(得分:1)

您可以通过将初始值设定项设为私有来获得相同的功能,并在属性和方法之前使用static/class关键字。使用final关键字可确保您的类不能被子类化,如果使用final,则静态方法不再有意义,因为它们无法被覆盖。

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

    class func methodA(){
        //do something
    }

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