swift基础2
来源:互联网 发布:c语言 字符串统计函数 编辑:程序博客网 时间:2024/06/12 00:41
三、面向对象编程
1、类
2、结构体
3、枚举
类、结构体、枚举都支持面向对象特性,包括:属性、下标、方法、构造、析构、继承、扩展、协议
1、类
类是swift中唯一的引用类型;
只有类的实例才可以成为对象;
1)、属性
除了以上几种属性外,还可以使用lazy实现延迟存储属性
解释:
a)、延迟存储属性,只在第一次访问它时,它才会初始化,减少内存占用
b)、只读计算属性:计算属性,如果只有getter访问器,没有setter访问器,不能被赋值
2)、下标
关键字:subscript
3)、构造、析构
构造器的作用是初始化存储属性
需要一个初始化方法,对let属性进行初始化,或者把变量类型的实例存储属性后面加?
a)、默认构造器
b)、构造器重载
c)、便利构造器、指定构造器
构造器代理:通过调用其他构造器来实现实例的部分构造的过程,即一个构造器调用另一个构造器的过程。
便利构造器:发生在同一类内部,构造器前面加上convenience,实现即可调用其他的构造器,见上例。
指定构造器:发生在继承时,在子类构造过程中,要先调用父类构造器初始化父类的存储属性,见上例。
原则:
l 指定构造器必须调用其直接父类的指定构造器
l 便利构造器必须调用同一类中定义的其他构造器
l 便利构造器必须最终以调用一个指定构造器结束
d)、析构
4)、继承
三种面向对象结构中,只有类可以继承,子类可以继承父类的:
a)、属性
b)、方法
c)、下标
如果父类不希望子类重写一个属性或者方法,可以加前缀final,这样子类重写的话,会报错:Instance method override a 'final' instance method
5)、协议
6)、扩展
可以为已有的类型(类、结构体、枚举、基本数据类型等)扩展新功能,对类而言,可以扩展:
a)、实例计算属性、静态计算属性
b)、实例方法、静态方法
c)、便利构造器
d)、下标
2、结构体
1)、属性
2)、下标
5)、协议
6)、扩展
与类相同用法,全部支持
只有一点区别:
静态协议属性、静态协议方法前面的class改为static
3)、构造、析构
4)、继承
与类不同,不支持
3、枚举
1)、属性
与类、结构体相比,不支持实例存储属性
a)、成员值默认不是整数类型,跟OC不一样
b)、可以为枚举指定原始值类型
当指定枚举的原始值类型后,可以使用rawValue获取一个实例的原始值,原始值=变量名或者被赋的其他值,如60、63行
c)、case 后面可以没有break,但是不会向下执行下一条case.
d)、switch分支语句中,可以没有default分支,如下例:
3)、构造、析构
4)、继承
与类不同,不支持
5)、协议
6)、扩展
与类相同用法,全部支持
只有一点区别:
枚举不支持实例存储属性,所以也不支持实例扩展属性和实例协议属性
- swift 基础2
- swift基础2
- Swift 入门基础-2
- Swift-基础-2
- Swift基础语法2
- Swift基础语法2
- swift基础2-运算符
- Swift教程 swift基础
- swift基础
- Swift 基础
- swift基础
- Swift 基础
- swift基础
- swift基础
- Swift基础
- Swift基础
- swift基础
- swift基础
- 杭电1398 Square Coins 简单母函数
- Java基础:类和对象
- 树的基本性质理论推导
- android中锁屏后代码不运行的问题
- Java--TreeMap源码解读
- swift基础2
- 功能强大的Xcode辅助工具Faux Pas:帮你找到各种隐形的bug
- 26、Java调用Oracle存储过程?
- USB Mass Storage大容量存储的基本知识
- UINavigationController ( 导航控制器 )
- CF_5B_CenterAlignment
- [Unity官方文档翻译]Importing Assets 如何向unity导入资源
- BZOJ 1086([SCOI2005]王室联邦-树的划分)
- ios swift 归档解档遇到的坑 3-30