创建类时,这两种创建自定义类的实现在安全性方面有什么区别?就我使用它们而言,它们的工作原理完全相同,但是听说使用私有变量是创建类的正确方法
class Person {
var name:String
var age:Int
init(name: String, age: Int){
self.name = name
self.age = age
}
}
和
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
}
}
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
}
}