Swift4.0复习类
1.类的属性:
2.类的方法:
3.类作为引用类型:
“Swift新增了一对操作符 === 与 !== 用于判定同一个类的两个对象引用是否指向同一对象实例。”
摘录来自: “大话Swift 4.0”。 iBooks.
4.继承:
- 添加 final 关键字,如果对一个用 final 所修饰的类进行继承,那么编译器就会直接报错。
当然,我们也可以用 final 关键字去修饰一个类中的方法,使得它不允许被其子类重写。
5.对属性的继承:
- “当子类B重写了父类A的某一存储式实例属性的属性观察者之后,
- 我们用类B的对象实例修改该属性时,先调用子类B的 willSet 方法,再调用父类A的 willSet 方法,
- 随后调用父类A的 didSet 方法,最后调用子类B的 didSet 方法。即便在类B中使用 super 来访问该属性,”
- 摘录来自: “大话Swift 4.0”。 iBooks.
6.对方法的继承:
7.对下标的继承:
- /// 定义类Father
- class Father {
- /// 定义存储式实例属性member
- var member =
- /// 定义下标,参数为Int类型
- subscript(index: Int) -> Int {
- return index + member
- }
- /// 定义下标,参数为String类型
- subscript(str: String) -> Int {
- return str.characters.count + member
- }
- }
- /// 定义了类Child,继承了Father类
- class Child: Father {
- /// 重写参数类型为Int的下标
- override subscript(index: Int) -> Int {
- return index - member
- }
- /// 重写参数类型为String的下标,
- /// 并且使得Child的子类将不能重写此下标
- override final subscript(str: String) -> Int {
- return str.characters.count - member
- }
- }
- // 这里声明了Father类型的对象引用ref,
- // 并且用Child对象实例为它初始化
- let ref: Father = Child()
- // 这里访问的是Child类的下标实现,
- // value的值为9
- var value = ref[]
- print("value = \(value)")
- // 这里访问的是Child类的下标实现,
- // value的值为2
- value = ref["abc"]
- print("value = \(value)")
8.类的初始化器方法:
便利初始化器方法中,如果没有指定的初始化器方法,不能对未被初始化的存储式实例属性进行访问。
9.初始化器方法的继承与重写:
10.必须实现的初始化器方法:
- 一旦父类的某个指定的初始化器方法前加上了 required 关键字,
- 那么子类必须重写该指定的初始化器方法,在重写该初始化器方法时,无需使用 override 关键字,
而直接使用 required 关键字,因为 required 已经包含了 override 的语义。
11.类的析构器仿方法:
- 析构器方法的调用次序,即先调用当前类的析构器方法,
- 再调用其父类的析构器方法。
12.类与协议的组合:
13.类遵循协议时的更多特性:
- “一个协议如果既可用于结构体与枚举类型,也能用于类类型,那么当在里面声明了一个 mutating 实例方法时,
一个类遵循该协议之后,对此 mutating 方法的实现不需要加 mutating 关键字。
因为类的实例方法没有 mutating 这个概念,它本身就是引用类型,所以也没有所谓的“写时拷贝”机制。- ”
- 摘录来自: “大话Swift 4.0”。 iBooks.
- “协议中如果要声明类型方法,则只能使用 static 关键字进行声明,而不能使用 class 关键字,
无论它是否被 class 限定,不过类在遵循该协议并实现该类型方法时,
仍然可以使用 class 关键字表示其子类可以重写该类型方法。- ”
- 摘录来自: “大话Swift 4.0”。 iBooks.
Swift4.0复习类的更多相关文章
- Swift4.0复习特性、编译标志和检查API的可用性
1.Swift中的特性: @引出,后面紧跟特性名,圆括号带参数即可. @attribute(args) avaiable: 指明对象,函数,类型的可用性. @available(iOS 10.0, m ...
- Swift4.0复习访问控制与作用域
1.访问等级: open: 可以继承,可以重写. public: “public 访问等级能用于修饰所有文件作用域的函数.对象.协议.枚举.结构体.类以及各种类型中的属性与方法.用 public 所修 ...
- Swift4.0复习类型定义、类型投射等操作
1.类型定义: /// 这里将MyInt定义为Int32类型 typealias MyInt = Int32 /// 这里将MyArrayInt定义为[MyInt]数组类型 typealias M ...
- Swift4.0复习协议
1.协议的定义: /// 定义一个协议MyProt protocol MyProt { /// 声明了一个实例方法foo, /// 其类型为:() -> Void func foo() ...
- Swift4.0复习结构体
1.基本语法: /** 定义了一个结构体 */ struct Structure { /// 一个常量存储式实例属性, /// 并直接为它初始化 let constProperty = /// ...
- Swift4.0复习Optional
1.Optional基本使用: 当我们声明一个Optional对象时,无论该对象是在文件作用域还是在函数体内作为局部对象声明,如果不对它初始化,那么它的值默认为空(nil). // 声明a为Int类型 ...
- Swift4.0复习基本语法简介
1.五种类型: 包含五种类型——枚举(enum).结构体(struct).类(class).协议( protocol)以及函数类型(function types). 2.变量对象:var 3.常量对象 ...
- Swift4.0复习错误处理
1.Swift中错误的表示: “在Swift中如果我们要定义一个表示错误的类型非常简单,只需遵循 Error 协议即可.我们通常用枚举或结构体类型来表示错误类型,当然枚举可能用得更多些,因为它能更直观 ...
- Swift4.0复习扩展
1.扩展计算式属性: 2.对方法进行扩展: /// 定义枚举类型Light, /// 它指定了基本类型String enum Light: String { case red = "red& ...
随机推荐
- Ubuntu 16.04LTS 安装和配置Bochs
环境:VMWare14+Ubuntu16.04 安装Bochs2.6.9 1.去官网下载 下载 bochs-2.6.9.tar.gz 2.安装一系列的包 因为Bochs 需要在 X11 环境下运行,因 ...
- Java - 框架之 MyBites
一. 开发步骤: 1. 创建 PO (model) 类,根据需求创建. 2. 创建全局配置文件 sqlMapConfig.xml. 3. 编写映射文件. 4. 加载映射文件, 在 SqlMapConf ...
- 0.Pycharm安装
以windows版本举例: 1.首先去Pycharm官网,或者直接输入网址:http://www.jetbrains.com/pycharm/download/#section=windows,下载P ...
- pycharm注册使用
先在PyCharm官网下载安装包 链接:https://www.jetbrains.com/pycharm/download/#section=linux 选择平台为Linux,可以看到当前版本为20 ...
- include和taglib指令
1.include指令用来包含另一个静态文件,这个静态文件可以是一个JSP页面.一个Servlet.文本文件.JSP代码. include.jsp <%@ page contentType=&q ...
- Java为什么会流行
为什么Java语言能长期占据编程语言排行榜首位? 面向对象设计,使用简单,可以很快速的入门: 开源生态做得好,很多可重用的组件,拿来即用: 跨平台,高性能,是做后台开发的首选 另一方面,Java命好, ...
- 引领开发工具近40年的程序员Anders Hejlsberg
有位神级程序员在近40年中一直创造引领潮流的开发工具(Turbo Pascal/Delphi/C#/TypeScript),他就是Anders Hejlsberg. 一. Anders并没有大学文凭, ...
- 深入基础(二)练习题,REPL交互解析器
NPM 关于npm命令其实不算很多很多,起码比dos命令少不少呢废话少说npm命令大全and各个命令用处持续更新中..来自园子内另外一位大神~:http://www.cnblogs.com/P ...
- 64位内核开发第六讲,Windbg调试ring3跟Ring0.一起调试
目录 驱动第六讲_Windbg连续调试Ring3.与Ring0 一丶Windbg连调试 驱动第六讲_Windbg连续调试Ring3.与Ring0 一丶Windbg连调试 有时候我们调试一个程序.可以使 ...
- P2016 战略游戏——树形DP大水题
P2016 战略游戏 树形DP 入门题吧(现在怎么是蓝色标签搞不懂): 注意是看见每一条边而不是每一个点(因为这里错了好几次): #include<cstdio> #include< ...