访问控制权限 open public internal fileprivate private swift
Swift 提供了五种不同的访问级别,分别是:open
、public
、internal
、fileprivate
和 private
,访问权限依次由高到低。
-
open
: 可以在定义的模块中使用,也可在其他的模块中使用,(模块相当项目的target)其他模块也可继承、重写。open
只能用在类、类成员上。打包静态库给其他项目使用时就需使用open
修饰 -
public
:可以在定义的模块中使用,也可在其他的模块中使用,但是其他模块不能继承、重写。 -
internal
: 只允许在定义的模块中访问, 不允许在其他模块中方法。通常用来隐藏文件内部实现细节。 -
fileprivate
: 只允许在定义的源文件中访问(只能在.swift文件中使用) -
private
: 只允许在定义的封闭声明中访问(例如:类中、一个函数的作用域内)
注意:不加任何修饰时默认是internal
。通常在设计接口时,如果只在应用程序或者框架内使用可以定义为internal
级别。
模块:单一的代码分配单元。指的是Framework
或App bundle
。在 Swift 中,可以用import
关键字引入自己的工程。
源文件:一个模块中的单个 Swift 源代码文件(指的是 Swift 中的Swift File
,就是编写 Swift 代码的文件)。
默认级别
-
若无显式声明,代码中所有实体的访问级别默认为
internal
。 -
如果定义一个
public
或internal
类型,其成员的访问级别默认为internal
; -
如果定义一个
fileprivate
或private
类型,其成员的访问级别默认为fileprivate
或private
。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性