创建类时,这两种创建自定义类的实现在安全性方面有什么区别?就我使用它们而言,它们的工作原理完全相同,但听说使用私有变量是创建类的正确方法
class Person {
var name:String
var age:Int
init(name: String, age: Int){
self.name = name
self.age = age
}
}
Run Code Online (Sandbox Code Playgroud)
和
class Person {
private var _name: String
private var _age: Int
var name: String {
set {
self._name = newValue
} get {
return _name
}
}
var age: Int {
set {
self._age = newValue
} get {
return _age
}
}
init(name: String, age: Int){
self._name = name
self._age = age
}
}
Run Code Online (Sandbox Code Playgroud)
private绝对建议使用,但仅在您希望为您的财产提供这种隐私的情况下使用。
您的第二个代码不确保任何类型的隐私。这只是添加了更多不必要的代码。
可能存在这样的情况:您希望将写访问权限保留为类型 ( class/struct) 的私有,并允许类型外部的读访问权限。为此,您可以private(set)在属性中使用访问修饰符,即
class Person {
private(set) var name: String
private(set) var age: Int
init(name: String, age: Int){
self.name = name
self.age = age
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7093 次 |
| 最近记录: |