码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-04-03 17:32:50      阅读:605      评论:0      收藏:0      [点我收藏+]

标签:string   区别   ext   文件   protocol   下标脚本   问控制   静态   属性   

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)

标签:string   区别   ext   文件   protocol   下标脚本   问控制   静态   属性   

原文地址:https://www.cnblogs.com/baidaye/p/8708813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!