1. 方法有哪两种?都可以定义在枚举、结构体、类中吗?
-
实例方法(Instance Method):
通过实例调用 -
类型方法(Type Method):
通过类型调用,用static
或者class
关键字定义
2. self 在实例方法和类型方法中代表什么?
- 在实例方法中代表
实例
- 在类型方法中代表
类型
3. 说一下 mutating
关键字的作用?
- 结构体和枚举是值类型,默认情况下,值类型的属性不能被自身的实例方法修改
- 在
func
关键字前加mutating
可以运行这种修改行为
4. 如何给任意类型(枚举、结构体、类),添加下标功能?
- 使用
subscript
可以给任意类型(枚举、结构体、类)增加下标功能,有些地方也翻译为:下标脚本 -
subscript
的语法类似于实例方法、计算属性 -
subscript
的本质就是方法(函数)
5. swift 中类型支持继承?哪些不支持继承?
-
枚举和结构体
不支持继承,只有类
支持继承
6. 什么是基类? Swift 中的基类
和 OC中的基类
一样吗?
- 没有父类的类,称为:
基类
- Swift 并
没有
像 OC、Java 那样的规定:任何类最终都要继承自某个基类
7. 子类可以重写父类的什么?重写必须要用什么关键字?
-
一般情况下
,子类可以重写父类的下标、方法、属性
- 重写必须加上
override
关键字 - 使用
override
关键字其实是 Swift 很好的特点,这样一看就知道这个方法是重写了父类的,非常明确
8. 类型方法
可以重写吗?(分两种情况)
- 被
class
修饰的类型方法、下标,允许
被子类重写 - 被
static
修饰的类型方法、下标,不允许
被子类重写
9. 重写属性的时候,有哪些注意点?(至少说三点)
重写属性10. 子类可以为父类的存储属性和计算属性添加属性观察器吗?
- 一般情况下,可以添加属性观察器
- 特殊情况:
只读属性和 let 属性
,不能添加属性观察器
11. 如果不希望属性被重写、或者类被继承,你要怎么做?
- 被
final
修饰的方法、下标、属性,禁止被重写
- 被
final
修饰的类,禁止被继承
网友评论