Swift Day09 方法、继承、属性

1. 方法有哪两种?都可以定义在枚举、结构体、类中吗?
  • 实例方法(Instance Method):通过实例调用
  • 类型方法(Type Method):通过类型调用,用 static 或者 class 关键字定义
2. self 在实例方法和类型方法中代表什么?
  • 在实例方法中代表实例
  • 在类型方法中代表类型
3. 说一下 mutating 关键字的作用?
  • 结构体和枚举是值类型,默认情况下,值类型的属性不能被自身的实例方法修改
  • func 关键字前加 mutating可以运行这种修改行为
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 修饰的类,禁止被继承

你可能感兴趣的:(Swift Day09 方法、继承、属性)