import Foundation
 
/// final的含义保持不变
public final class FinalClass { }
 
// 这个类在ModuleA的范围外是不能被继承的,只能被访问
public class PublicClass {
 
    public func testPublic() {}
 
    // 这是错误的写法,因为class已经不能被继承,
    // 所以他的方法的访问权限不能大于类的访问权限
    open func testOpen() {}
 
    // final的含义保持不变
    public final func testPublicFinal() {}
}
 
// 在ModuleA的范围外可以被继承
open class OpenClass {
    // 这个属性在ModuleA的范围外不能被override
    public var size : Int = 0
 
    // 这个方法在ModuleA的范围外不能被override
    public func testPublic() {}
 
    // 这个方法在任何地方都可以被override
    open func testOpen() {}
 
    ///final的含义保持不变
    public final func testPublicFinal() {}
}
  • 在 ModuleB.framework 中新建一个类:ModuleB.swift

  • 并且把 ModuleA.framework import 进来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import Foundation
import ModuleA
 
// 这个写法是错误的,编译会失败,类访问权限标记的是public,只能被访问不能被继承
class SubA : PublicClass { }
 
// 这样写法可以通过,Class访问权限为 `open`.
class SubB : OpenClass {
 
    // 这样写也会编译失败,因为这个方法权限为public,不是`open'.
    override func testPublic() { }
 
    // 这个方法因为在SubclassableParentClass中标记为open,所以可以这样写
    // 这里不需要再声明为open,因为这个类是internal的
    override func testOpen() { }
}
 
open class SubC : OpenClass {
    // 这种写法会编译失败
    override func testPublicFinal() { }
 
    // 正确的写法,方法也需要标记为open
    open override func testOpen() { }
}
 
open class SubE : OpenClass {
    // 也可以显式的指出这个方法不能再被override
    public final override func testOpen() { }
}

Swift 3.0 的 open,public,internal,fileprivate,private 关键字的更多相关文章

  1. Swift 3 中的访问控制 open public internal fileprivate private

    Swift 3必看:新的访问控制fileprivate和open http://www.jianshu.com/p/604305a61e57 浅谈 Swift 3 中的访问控制 https://mai ...

  2. C# 类中访问修饰符的优先级与用法(public, internal, protected, private)

    首先:类成员的访问级别是以类的访问级别为上限的! 也就是类的访问级别低时,类成员的访问级别高也无法突破类的访问级别 public级别,作用域是这个解决方案() internal级别,作用域是整个装配集 ...

  3. Swift 4.0 中的 open,public,internal,fileprivate,private

    1.private private访问级别所修饰的属性或者方法只能在当前类里访问. 2.fileprivate fileprivate访问级别所修饰的属性或者方法在当前的Swift源文件里可以访问. ...

  4. Swift 2.0初探

    转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引 ...

  5. iOS开发——新特性OC篇&Swift 2.0新特性

    Swift 2.0新特性     转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...

  6. Swift 2.0初探:值得注意的新特性

    转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...

  7. swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明

    关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...

  8. Swift 4.0:访问级别(访问控制)

    基础篇 注: 下文中所提及的类和类型为Class, Enum和Struct Swift中的访问级别有以下五种: open: 公开权限, 最高的权限, 可以被其他模块访问, 继承及复写. public: ...

  9. Swift 3.0 令人兴奋,但Objective-C也有小改进--Objective-C的类属性

    由于Swift 3.0 出了太多令人兴奋的新特性,人们很容易忽略 Objective-C中的小改动.或许你会觉得苹果提及Objective-C 很可能是为了提高和Swift互操作性(译者注:互操作性主 ...

  10. 一起聊聊 Swift 3.0

    Swift3.0将会给我们带来哪些改变: 1. 稳定二进制接口(ABI) ABI是什么呢?API大家都知道是应用程序接口 API只是提供函数签名 而ABI是系统和语言层面的 如果ABI稳定 意味着以后 ...

随机推荐

  1. Android中空格及换行

    空两个字符          换行  \n

  2. CodeForces 558E(计数排序+线段树优化)

    题意:一个长度为n的字符串(只包含26个小字母)有q次操作 对于每次操作 给一个区间 和k k为1把该区间的字符不降序排序 k为0把该区间的字符不升序排序 求q次操作后所得字符串 思路: 该题数据规模 ...

  3. 解决虚拟机ssh连接出错connection refused

    在安装操作系统之后,使用ssh连接,发现直接报错connection refused. 检查虚拟机的连接方式,在使用host only的方式的时候,必须接入网线,不然的网卡是不活动的,从而不能使用ss ...

  4. HTML 5:你必须知道的data属性

    原文:All You Need to Know About the HTML5 Data Attribute 译文:你必须知道HTML 5 的Data属性 译者:dwqs HTML 5的Data属性可 ...

  5. ACM2033

    /**人见人爱A+B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  6. eclipse 使用gradle构建系统时候报错

    今天启动eclipse后,昨天运行正常的gradle项目报错,无法进行编译,错误信息如下: Unable to start the daemon process. This problem might ...

  7. Android JNI之C/C++层调用JAVA

    转载请声明:原文转自:http://www.cnblogs.com/xiezie/p/5930032.html 从C/C++层调用JAVA层代码步骤: 1. 在JAVA类中创建java方法和本地方法 ...

  8. ehcache 的配置

    配置:一.在src目录下加入ehcache.xml: <cache name="SimplePageCachingFilter" maxElementsInMemory=&q ...

  9. [现代程序设计]homework-03

    Homework-03 队员: 11061193 薛亚杰 11061192 周敏轩    11061190 李孟 材料阅读 我们三个人将以下材料仔细阅读,觉得十分受益.下面是我们的总结和分享: 1)代 ...

  10. HTML5每日一练之input新增加的5种其他类型1种标签应用

    今天介绍input在HTML5中的最后5种类型,分别是:number,range,search,tel和color 注意:此种类型的input在Opera10+中效果为佳,Chrome中效果不是十分好 ...