7.面向对象编程

2020-05-06  本文已影响0人  迷心迷

Swift 面向对象编程

面向对象的三大特性

继承
封装
多态

基本单元

枚举
结构体

协议
扩展

面向对象概述
类和结构体相似点

定义属性用来存储值;
定义方法用于提供功能;
定义下标脚本用来允许使用下标语法访问值;
定义初始化器用于初始化状态;
可以被扩展来默认所没有的功能;
遵循协议来针对特定类型提供标准功能。

类和结构体不同点

继承允许一个类继承另一个类的特征;
类型转换允许你在运行检查和解释一个类实例的类型;
反初始化器允许一个类实例释放任何其所被分配的资源;
引用计数允许不止一个对类实例的引用。

增强的枚举

枚举语法
使用 Switch 语句来匹配枚举值
遍历枚举的 case
关联值
06
原始值
预设原始值
从原始值初始化
递归枚举
11

添加属性

存储属性
常量结构体实例的存储属性
延迟存储属性
计算属性
简写 setter
简写 getter
只读计算属性
属性观察者
全局和局部变量

类型属性

添加方法

实例方法
实例方法-self
在实例方法中修改属性
22
在 mutating 方法中赋值给 self
23
枚举的 mutating 方法
类型方法

下标

28

类的初始化和反初始化

初始化器

类的继承和初始化

指定初始化器和便捷初始化器
37
类的初始化委托
两段式初始化
安全检查

1、指定初始化器必须保证在向上委托给父类初始化器之前,其所在类引入的所有属性都要初始化完 成。
2、指定初始化器必须先向上委托父类初始化器,然后才能为继承的属性设置新值。如果不这样做, 指定初始化器赋予的新值将被父类中的初始化器所覆盖。
3、便捷初始化器必须先委托同类中的其它初始化器,然后再为任意属性赋新值(包括同类里定义的 属性)。如果没这么做,便捷构初始化器赋予的新值将被自己类中其它指定初始化器所覆盖。
4、初始化器在第一阶段初始化完成之前,不能调用任何实例方法、不能读取任何实例属性的值,也 不能引用 self 作为值。


39 40 41 42
两段式初始化过程-阶段1
43
初始化器的继承和重写
初始化器的自动继承
可失败初始化器
可失败初始化器 init!
必要初始化器
反初始化

继承

定义基类
子类
重写
访问父类的方法、属性和下标脚本
重写方法
重写属性的 getter 和 setter
重写属性的观察器

阻止重写

多态和类型转换

类型
49
类型检查
向下类型转换
Any 和 AnyObject
嵌套类型
扩展
extension 的能力
计算属性
初始化器
51
方法
mutating 方法
下标
54
添加内嵌类型
协议
56
属性要求
58
方法要求
mutating 方法要求
初始化器要求
60 61
将协议作为类型
协议继承
类专用的协议
协议组合
65
可选协议要求
协议 and 扩展
在扩展里添加协议遵循
66
有条件地遵循协议
使用扩展声明采纳协议
68
协议扩展
提供默认实现
给协议扩展添加限制

面向协议编程1

OOP
OOP 的缺陷
POP
OOP vs POP
OOP
73 74

POP

75 76
面向协议编程2
POP
77 78 79 80 81 82 83 84 85 86
上一篇下一篇

猜你喜欢

热点阅读