Swift 是否支持静态 类?
Are static classes supported by Swift?
我想知道您是否可以在 swift 中创建类似于 C# 中的静态 classes,即无法实例化的 class 只能具有静态函数和静态属性。这些类型的 classes 在 swift 中可能吗?
如果没有,根据 Swift 中可用的工具,重新创建此类设计模式的最有效方法是什么?
不,Swift 没有静态 class 的概念。但是,如果您无论如何都没有可分配的属性,那么初始化会有什么不同呢?我可以想到 2 个选项:
将class标记为final
,这样就无法继承:final class MyClass { .... }
使用没有继承的struct
:struct 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()
我想知道您是否可以在 swift 中创建类似于 C# 中的静态 classes,即无法实例化的 class 只能具有静态函数和静态属性。这些类型的 classes 在 swift 中可能吗?
如果没有,根据 Swift 中可用的工具,重新创建此类设计模式的最有效方法是什么?
不,Swift 没有静态 class 的概念。但是,如果您无论如何都没有可分配的属性,那么初始化会有什么不同呢?我可以想到 2 个选项:
将class标记为
final
,这样就无法继承:final class MyClass { .... }
使用没有继承的
struct
:struct 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()