Swift扩展&协议&访问控制

2019-12-10  本文已影响0人  woniu

一、扩展

1、扩展简介:

Swift中的扩展,类似于OC中的分类(Category)。

2、扩展可以为枚举、结构体、类、协议添加新功能。

a.可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等。

3、扩展不能办到的事

a.不能覆盖原有的功能。
b.不能添加存储属性,不能向已有的存储属性添加属性观察器。
c.不能添加父类。
d.不能添加指定初始化器,不能添加反初始化器。

二、协议

extension TestProtocol{
    func test1() {
        print("执行了test1方法")
    }
    func test2() {
        print("执行协议中未声明过的方法test2")
    }
}

三、访问控制

1、访问控制方面 ,Swift提供了5个不同的访问级别(以下是从高到低排列的)
2、访问级别使用准则

一个实体不可以被更低访问级别的实体定义,例如:

3、泛型类型
  internal class Car {}
  fileprivate class Dog {}
  public class Person<T1, T2> {}
  //Person<Car,Dog>的最低访问级别是fileprivate
  fileprivate var p = Person<Car,Dog>()
4、成员、嵌套类型
5、getter、setter

getter、setter默认自动接收他们所属环境的访问级别
可以给setter单独设置一个比getter更低的访问级别,用以限制写的权限。

6、初始化器
7、枚举类型的case
8、协议
public protocol Runnable{
    func run()
}
public class PersonOne : Runnable {
    func run() {}
}

错误提示:Method 'run()' must be declared public because it matches a requirement in public protocol 'Runnable' (方法run必须声明为public,因为它必须匹配声明为public的协议Runnable)

修改后:

public class PersonOne : Runnable {
    public func run() {}
}
9、扩展
上一篇 下一篇

猜你喜欢

热点阅读