封装(Encapslution)
- 默认是internal:在当前应用或模块可见
- public:在模块、Framework(框架)外可见
- private:只能在当前文件中使用
扩展(extension)
- 可以给一个已有的类型增加新的功能
- 扩展中只能增加计算属性和方法,不能增加存储属性
协议(protocol)
- 协议可以声明方法,但是不能实现
- 协议声明(说明)行为,规定一个类应该具备什么样的行为(特征)
- 协议可以将没有公共父类,但是有类似行为的对象归为同一类
继承(Inheritance):主要目的是重用代码,父类给子类提供公共代码
实现(Conform):主要目的是提供约束,将不同类型按行为分类
存储属性:
class Shape {
var size: CGSize! {
willSet(newValue) {
print("size: \(size):\(newValue)")
}
didSet {
print("size:\(size)")
}
}
}
计算属性:
class Shape {
var size: CGSize!
var area: CGFloat {
set(newValue) {
size.width = sqrt(newValue)
size.height = sqrt(newValue)
}
get {
return size.width * size.height
}
}
}