sli*_*boy 2 encapsulation swift
我在一个在线视频中找到了这个例子,我无法真正理解它的重要性以及幕后发生的事情:
class Person {
private var _name: String!
var name: String {
return _name
}
init(name: String){
_name = name
}
}
Run Code Online (Sandbox Code Playgroud)
在视频中他提到私有变量是为了防止类操作数据,但我无法理解为什么这会成为一个问题以及它将如何发生.
有人可以向我解释一下,就像我5岁一样吗?
谢谢您的帮助
有人可以向我解释一下,就像我5岁一样吗?
好吧,我五岁的朋友,你熟悉"陌生人=危险"规则,对吧?有时,您的对象需要与陌生人交互.虽然在许多情况下,与您的对象进行交互的陌生人都是善意的,但偶尔会遇到想要伤害您的对象的人,例如,通过更改其名称:
// If name were public, anyone could do this:
somePerson._name = "nasty-boy" // Not a good name!
Run Code Online (Sandbox Code Playgroud)
为了保护您的对象免受想要重命名它们的陌生人的影响,您可以通过标记它们来使对象外部的任何人无法访问重要的内容private
.这使得对象之外的任何人都无法访问这些重要的事物.但是,对象自己的方法可以自由访问私有变量,例如,将它们返回给陌生人进行读取,但不能写入:
var name: String {
return _name
}
Run Code Online (Sandbox Code Playgroud)