美文网首页
Swift4.0+ Access Control (open/p

Swift4.0+ Access Control (open/p

作者: YYYYYY25 | 来源:发表于2018-05-09 14:55 被阅读16次

Swift原本有2种常见的访问控制修饰符:private和public。

在Swift3.0+,添加了fileprivate和open,他们可以看成是对private和public的进一步细分

网上的资料大多停留在Swift3.0,本以为在最新的Swift4.0+这些没发生变化。但其实不然

Swift3.0 访问权限示意图

如果你不太明白上面的示意图,可以参考下我的理解方式:

我更喜欢分 文件/模块 去理解他们的区别。

一、声明一个Class A

FileA.swift中声明一个类Class A

二、Extension A

2.1 在相同文件中多 Class A扩展

FileA.swift中扩展Class A

2.2 在不同文件中多 Class A扩展

FileB.swift中扩展Class A

总结:

1 对于类扩展而言,用private和fileprivate修饰的属性和方法没有区别,在相同文件中可以正常调用,而在不同文件中都不能调用。

三、继承Class A

3.1 在相同文件中继承 Class A

FileA.swift中声明一个Class C,并继承自Class A

3.2 在不同文件中继承 Class A

FileB.swift中声明一个Class B,并继承自Class A

总结:

1 在相同文件中继承 Class A,private修饰的属性不能被调用,方法不能被重写,可以被调用。

2 在不同文件中继承 Class A,private和fileprivate修饰的属性都不能被调用,方法都不能被重写,可以被调用。

四、扩展Class A的子类

4.1 在相同文件扩展子类,即上面的Class C

FileA.swift中对子类Class C扩展

4.2 在不同文件扩展子类,即上面的Class B

FileB.swift中对子类Class B扩展

总结:

1 在相同文件扩展子类,private修饰的属性不能被调用,而方法可以。

2 在不同文件扩展子类,private和fileprivate修饰的属性都不能被调用,而方法斗可以。

以上是在Swift4.0+中属性和方法的访问权限的列举,仅方便查看。

访问权限以此为:open,public,internal(默认),fileprivate,private。这是不会变的。

相关代码:Demo

相关文章

网友评论

      本文标题:Swift4.0+ Access Control (open/p

      本文链接:https://www.haomeiwen.com/subject/zugnrftx.html