Swift 3.0 的 open,public,internal,fileprivate,private 关键字
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 Foundationimport 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 关键字的更多相关文章
- Swift 3 中的访问控制 open public internal fileprivate private
Swift 3必看:新的访问控制fileprivate和open http://www.jianshu.com/p/604305a61e57 浅谈 Swift 3 中的访问控制 https://mai ...
- C# 类中访问修饰符的优先级与用法(public, internal, protected, private)
首先:类成员的访问级别是以类的访问级别为上限的! 也就是类的访问级别低时,类成员的访问级别高也无法突破类的访问级别 public级别,作用域是这个解决方案() internal级别,作用域是整个装配集 ...
- Swift 4.0 中的 open,public,internal,fileprivate,private
1.private private访问级别所修饰的属性或者方法只能在当前类里访问. 2.fileprivate fileprivate访问级别所修饰的属性或者方法在当前的Swift源文件里可以访问. ...
- Swift 2.0初探
转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引 ...
- iOS开发——新特性OC篇&Swift 2.0新特性
Swift 2.0新特性 转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...
- Swift 2.0初探:值得注意的新特性
转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...
- swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明
关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...
- Swift 4.0:访问级别(访问控制)
基础篇 注: 下文中所提及的类和类型为Class, Enum和Struct Swift中的访问级别有以下五种: open: 公开权限, 最高的权限, 可以被其他模块访问, 继承及复写. public: ...
- Swift 3.0 令人兴奋,但Objective-C也有小改进--Objective-C的类属性
由于Swift 3.0 出了太多令人兴奋的新特性,人们很容易忽略 Objective-C中的小改动.或许你会觉得苹果提及Objective-C 很可能是为了提高和Swift互操作性(译者注:互操作性主 ...
- 一起聊聊 Swift 3.0
Swift3.0将会给我们带来哪些改变: 1. 稳定二进制接口(ABI) ABI是什么呢?API大家都知道是应用程序接口 API只是提供函数签名 而ABI是系统和语言层面的 如果ABI稳定 意味着以后 ...
随机推荐
- C# DataGridView的列对象属性探讨 (未完待续)
比较难的几个属性的释义[1]:
- [转] 使用C#开发ActiveX控件
双魂人生 原文 使用C#开发ActiveX控件 ActiveX 是一个开放的集成平台,为开发人员.用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内 ...
- bug报告-常用词汇中英对照表
- 通过库函数API和C代码中嵌入汇编代码剖析系统调用的工作机制
作者:吴乐 山东师范大学<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 本次实验的主要内容就是分别采用A ...
- Tkinter教程之Canvas篇(4)
本文转载自:http://blog.csdn.net/jcodeer/article/details/1812091 '''Tkinter教程之Canvas篇(4)''''''22.绘制弧形'''# ...
- 多级联动导航栏(top导航)
http://www.dynamicdrive.com/style/csslibrary/item/jquery_multi_level_css_menu_2/ This is a multi-lev ...
- Trail: JDBC(TM) Database Access(2)
package com.oracle.tutorial.jdbc; import java.sql.CallableStatement; import java.sql.Connection; imp ...
- Creating Help Pages for ASP.NET Web API -摘自网络
When you create a web API, it is often useful to create a help page, so that other developers will k ...
- 用MATLAB实现字符串分割
strsplit更好用,用法: strsplit(strtrim(sprintf(' \t\nds \nhs\t dssd \t \n'))) 以下转载 Matlab的字符串处理没有 ...
- 软件工程个人作业——Agile Software Development读后感
昨天利用了半天的时间看了下老师给的网页下的8篇文章和一段宣言,将感悟整理为下面的一篇博客. 首先先介绍一下这个网页.记得我们上学期上过一门课叫做面向对象建模方法,在这门课上刘超老师极力推荐的一本教材— ...