Swift 为什么我可以在操场上设置私人场地

Swift 为什么我可以在操场上设置私人场地,swift,swift2,Swift,Swift2,我有一个简单的车辆类,它有一个名为\u里程表的私有字段,然后,我有一个名为里程表的计算属性(它有setter和getter) 我认为,\u里程表应该不能设置,因为它是一个私人场地,但在操场上,它可以设置,为什么?以下是我的游戏规则: 如您所见,我创建了一个名为volvo的Vehicle实例。默认情况下,\u里程表是500,但我可以在volvo上直接将\u里程表设置为0,当打印出“里程表”时,它是0为什么我可以设置私有字段?Swiftprivate在语义上与其他OO语言略有不同,它对源文件是私有

我有一个简单的
车辆
类,它有一个名为
\u里程表
私有字段,然后,我有一个名为
里程表
的计算属性(它有setter和getter)

我认为,
\u里程表
应该不能设置,因为它是一个私人场地,但在操场上,它可以设置,为什么?以下是我的游戏规则:


如您所见,我创建了一个名为
volvo
Vehicle
实例。默认情况下,
\u里程表
是500,但我可以在
volvo
上直接将
\u里程表
设置为0,当打印出“里程表”时,它是0为什么我可以设置私有字段?

Swift
private
在语义上与其他OO语言略有不同,它对源文件是私有的

在:

私有访问将实体的使用限制为其自己的定义 源文件。使用私有访问隐藏的实现细节 一个特定的功能


在Swift4中引入了一种新的访问控制:
fileprivate
,它现在具有您描述的属性
private
现在可以在其他语言中正常工作