Closed. This question needs to be more focused。它目前不接受答案。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post。
三年前关闭。
我知道什么时候使用这些不同的关键字,但是有人能告诉我什么时候我想使用它们,它们在运行时如何影响我的应用程序吗?
哪里
从
最终的
最好将所有类声明为final,并在必须对它们进行子类化时将其移除。Final如果您试图对Final类进行子类划分,那么它会给您提供一个编译时错误,因此这可以帮助您拥有一个干净的体系结构,而不必冒创建混乱代码的风险,并且它也有助于代码的可读性。
私有的
私有类/属性在作用域之外不可见。
它可以帮助您在体系结构中进行良好的封装。
我建议阅读Swift文档以获得更好的解释:
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html
想改进这个问题吗?更新问题,使其只关注一个问题editing this post。
三年前关闭。
我知道什么时候使用这些不同的关键字,但是有人能告诉我什么时候我想使用它们,它们在运行时如何影响我的应用程序吗?
最佳答案
静止的
当需要一些数据而不分配新对象时,可以使用静态方法或属性,静态的最常见用法可能是单例设计模式,或者当您有一些helper类时。
例如,在函数中可以调用:
let temp = Helper.staticMethod();
哪里
class Helper {
private let test1234 = false
private func privateMethod() {
}
private static func privateStaticMethod() -> Int {
return 0
}
static func staticMethod() -> Int {
self.privateMethod() // Error
self.test1234 // Error
self.test1234 // Error
Helper.privateStaticMethod() // OK
return 0
}
}
从
staticMethod
您不能访问类的非静态方法或属性Helper
最终的
最好将所有类声明为final,并在必须对它们进行子类化时将其移除。Final如果您试图对Final类进行子类划分,那么它会给您提供一个编译时错误,因此这可以帮助您拥有一个干净的体系结构,而不必冒创建混乱代码的风险,并且它也有助于代码的可读性。
final class FinalClass {
}
class Sub1: FinalClass {
} //Error
class Base {
}
class SubBase: Base {
} //OK
私有的
私有类/属性在作用域之外不可见。
它可以帮助您在体系结构中进行良好的封装。
class A {
private let test = 1
let test2 = 1
}
let classA = A()
classA.test //Error
classA.test2 //OK
我建议阅读Swift文档以获得更好的解释:
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html
关于ios - 我什么时候想在swift 2.2中使用static,final,private? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38884701/
10-13 06:58