1,Swift中协议类似于别的语言里的接口,协议里只做方法的声明,包括方法名、返回值、参数等信息,而没有具体的方法实现。
protocol Person { //读写属性 var name:String{get set} //只读属性 var age:Int{get} //类型方法 static func method1() //实例方法 func method2() -> Int //突变方法 mutating func method3() }
2,协议可以继承另一个协议
protocol Animal { func move() } protocol Bird:Animal{ func song() } class Chiken: Bird { func song() { print("gege") } func move() { print("run") } }
3,如果某个类集继承了某个父类,又遵循了某个协议,那么冒号后面应该先写父类,再写协议
class CC:继承的父类, 协议1, 协议2{ }
类扩展(extension)
1,给已有的类添加计算属性和计算静态属性
2,定义新的实例方法和类方法
3,提供新的构造器
4,定义下标脚本
5,是一个已有的类型符合某个协议
各个修饰符区别
- private 访问级别所修饰的属性或者方法只能在当前类里访问。
- fileprivate 访问级别所修饰的属性或者方法在当前的 Swift 源文件里可以访问。
- internal(默认访问级别,internal修饰可写可不写) internal 访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问。
- 如果是框架或者库代码,则在整个框架内部都可以访问,框架由外部代码所引用时,则不可以访问。
- 如果是 App 代码,也是在整个 App 代码,也是在整个 App 内部可以访问。
-
public可以被任何人访问。但其他 module 中不可以被 override 和继承,而在 module 内可以被 override 和继承。
- open可以被任何人使用,包括override和继承