自定义构造器的访问级别可以低于或等于其所属类型的访问级别。唯一的例外是 15.7. 必要构造器 ,它的访问级别必须和所属类型的访问级别相同。
如同函数或方法的参数,构造器参数的访问级别也不能低于构造器本身的访问级别。
默认构造器
如 15.3. 默认构造器 所述,Swift 会为结构体和类提供一个默认的无参数的构造器,只要它们为所有存储型属性设置了默认初始值,并且未提供自定义的构造器。
默认构造器的访问级别与所属类型的访问级别相同,除非类型的访问级别是 public
。如果一个类型被指定为 public
级别,那么默认构造器的访问级别将为 internal
。如果你希望一个 public
级别的类型也能在其他模块中使用这种无参数的默认构造器,你只能自己提供一个 public
访问级别的无参数构造器。
结构体默认的成员逐一构造器
如果结构体中任意存储型属性的访问级别为 private
,那么该结构体默认的成员逐一构造器的访问级别就是 private
。否则,这种构造器的访问级别依然是 internal
。
如同前面提到的默认构造器,如果你希望一个 public
级别的结构体也能在其他模块中使用其默认的成员逐一构造器,你依然只能自己提供一个 public
访问级别的成员逐一构造器。