Swift4.0复习类
2024-08-26 11:44:30
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.
最新文章
- Linux系统性能10条命令监控
- Debian
- 小结 javascript中的类型检测
- uva 125
- C++ Primer--虚函数与纯虚函数的区别
- 带搜索功能,支持绑定对象到节点的TreeView辅助类
- 改进我们的小游戏 - 零基础入门学习Python004
- ROS的tf_tree相关
- asp.net mvc 上传下载文件的几种方式
- 告别S! S! H!秒杀终端工具——FastLogin快捷登录
- Hibernate原理
- iOS app 的 ASLR
- 利用pyinotify监控文件内容,像tailf命令但比它更强
- HDU - 1789 贪心
- C#/AutoCAD 2018/ObjectArx/二次开发添加删除实体的工具函数(四)
- 自定义域名访问本地WEB应用
- 修改windows7 的管理员密码
- CodeForce VKcup A
- Oracle EBS 隐藏帮助-诊断-检查
- django创建model
热门文章
- 织梦个人空间中调用ip,会员类型,邮箱,金币,会员积分
- 使用unsafe改善性能
- 初始SpringBoot
- Github的使用/git远程提交代码到Github
- centos6.5下安装docker的过程办法
- Docker+GitLab+Jenkins+kubernetes实现DevOps 持续化集成和持续化部署概念图
- Kubernetes 学习4 kubernetes应用快速入门
- Ubuntu下面删除和卸载软件
- codevs:1313 质因数分解:已知正整数 n是两个不同的质数的乘积,试求出较大的那个质数 。
- PKUSC2019 改题记录