Swift中的访问级别

  我在之前的笔记《项目基本架构的搭建》中提到过访问级别,这里再做一个详细的补充。Swift提供了5种访问级别,分别为open、public、internal、fileprivate和private。它们既可以修饰类、结构体、枚举等面向对象的类型,也可以修饰变量、常量、下标、元组、函数和属性等类型。其具体的含义为:

  • open:其访问限制是最小的,任何被open修饰的实体,无论是在自己的模块内部,还是在其它模块内,都可以被访问;
  • public:在同一个模块中,public和open完全一样。但是在不同的模块中,被public所修饰的类不能够被继承,被public所修饰的属性和方法不能被重写;
  • internal:它是默认的访问限定,被internal所修饰的实体只能在自己模块中被访问;
  • fileprivate:被fileprivate所修饰的实体只能在当前源文件中被访问;
  • private:private是真正意义上的“私有”,被private所修饰的实体只能在实体内部被访问。

  在上面所说的实体,主要是指类、结构体、枚举、变量、常量、下标、元组、函数和属性等类型。这些访问限制具体该如何使用呢?具体使用情况如下:

  • 如果类、结构体和枚举被定义为internal或者private,那么它们所声明的变量或者常量不能使用public访问级别。因为被public所修饰的变量或者常量可以被任何人访问,而internal和private则不是;
  • 函数的访问级别不能高于它的参数和返回类型的访问级别。比如说,如果函数被声明为public,而他的参数或者返回类型被声明为internal或者private,那么就会出现函数可以被任何人访问,而它的参数和返回类型则不可以被访问,这样会产生严重的问题;
  • 一般而言,在开发框架时,供别人使用的,应该设置为public,而不希望别人看到的东西,应该设置为internal或者private;
  • 在当前源文件中,只供自己使用的属性或者方法,一般应该设置为fileprivate。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本章将会介绍 模块和源文件访问级别访问控制语法自定义类型子类常量、变量、属性、下标构造器协议扩展泛型类型别名位运算...
    寒桥阅读 4,455评论 0 2
  • 访问控制 可以限定其它源文件或模块中的代码对你的代码的访问级别。这个特性可以让我们隐藏代码的一些实现细节,并且可以...
    答案MK阅读 2,299评论 0 0
  • 136.泛型 泛型代码让你可以写出灵活,可重用的函数和类型,它们可以使用任何类型,受你定义的需求的约束。你可以写出...
    无沣阅读 5,454评论 0 4
  • We don’t want to walk into the future or now, we just wan...
    soulomoon阅读 1,589评论 0 0
  • 引言 在金融类软件开发过程中,经常会涉及到用户银行卡信息的校验,包括银行卡卡号、开户人姓名、身份证号和手机号等。理...
    亦枫阅读 16,798评论 5 36

友情链接更多精彩内容