Swift - 协议类扩展(extension) 访问控制(fileprivate,private,internal,public,open)

Posted 蓝枫姐姐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift - 协议类扩展(extension) 访问控制(fileprivate,private,internal,public,open)相关的知识,希望对你有一定的参考价值。

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,是一个已有的类型符合某个协议

各个修饰符区别

  1. private 访问级别所修饰的属性或者方法只能在当前类里访问。
  2. fileprivate 访问级别所修饰的属性或者方法在当前的 Swift 源文件里可以访问。
  3. internal(默认访问级别,internal修饰可写可不写)
  4.          internal 访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问。
    • 如果是框架或者库代码,则在整个框架内部都可以访问,框架由外部代码所引用时,则不可以访问。
    • 如果是 App 代码,也是在整个 App 代码,也是在整个 App 内部可以访问。
  5. public可以被任何人访问。但其他 module 中不可以被 override 和继承,而在 module 内可以被 override 和继承。
  6. open可以被任何人使用,包括override和继承

 

以上是关于Swift - 协议类扩展(extension) 访问控制(fileprivate,private,internal,public,open)的主要内容,如果未能解决你的问题,请参考以下文章

Swift-扩展(Extensions)(十八)

Swift学习:扩展(Extensions)

Swift 扩展(Extension)总结

swift3.0 扩展协议

Swift学习Swift编程之旅---扩展(二十四)

Swift中协议的简单介绍