当前位置: 首页>编程语言>正文

Swift3.0中访问控制openpublicinternalfileprivateprivate

今天突然发现访问控制open/public/internal/fileprivate/private,弄的不是很明看,于是查了以下资料,看了一篇关于这方面的博客,在这里整理一下

<pre>
swift3.0中访问控制一共有5个关键字
*1. open:可以在任何地方访问、继承和重写
*2. public:可以在任何地方被访问,在其他module中不能被继承和重写(一会在详细介绍一下什么是module内和module外)
*3. internal:默认访问级别,在整个模块内都可以被访问
*4. fileprivate:其修饰的属性可以再同一个文件被访问、继承和重写,同一个文件指同一个swift文件,一个文件中可以有多个类

  1. private:其修饰的属性和方法只能在本类被访问和使用,不包括扩展类
    </pre>

其访问权限从上至下,逐次降低,下面一一介绍这5个访问控制关键字

1.private 和 fileprivate

这两个访问关键字都是防止文件外访问,但是还是有一些差别的

Swift3.0中访问控制openpublicinternalfileprivateprivate,第1张
屏幕快照 2016-11-04 上午10.41.55.png

关于这两个属性的差别,比较简单,这里不赘述,fileprivate相当于swift2.0中的private

2.internal

默认访问级别,internal可以可不写
关于internal关键字,解释起来有点绕

internal访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问。
如果是框架或者库代码,则在整个框架内部都可以访问,框架由外部代码所引用时,则不可以访问。
如果是App代码,也是在整个App代码,也是在整个App内部可以访问。

3.public

1.使用public修饰的类,属性或方法,可以被任何类访问,
2.但在其他的module中不可以被override和继承,而在本module可以;

注意:module内和module外的区别 : module内是指不需要使用import引用文件,就可以创建对象,表示module内,而module外是指需要使用import文件才能创建对象才能使用

4.open

1.可以被任何人使用
2.也可以被override和继承,这是和public的区别


https://www.xamrdz.com/lan/5cw2016654.html

相关文章: