・Swiftにおけるアクセス修飾子
・アクセス修飾子には、公開範囲が広い順に以下のものが用意されている。
・デフォルトはinternal
| アクセス修飾子 | アクセスレベル |
|---|---|
| open | モジュール内外のすべてのアクセスを許可 |
| public | モジュール内外の全てのアクセスを許可するが、モジュール外ではクラスを継承したりオーバーライドしたりすることはできない |
| internal | 同一モジュール内のアクセスのみを許可 |
| fileprivate | 同一ソースファイル内のアクセスのみを許可 |
| private | 対象の要素が属しているスコープ内のアクセスのみを許可 |
では、実際に利用してアクセスレベルを確認する
class SomeClass {
//オーバーライドを許可する場合
open var a = "a"
//オーバーライドを許可しない場合
public var b = "b"
//同一モジュールならOK
internal var c = "c"
//同じファイル内ならOK
fileprivate var d = "d"
//定義したスコープ内ならOK
private var e = "e"
}
var some = SomeClass()
some.a // "a"
some.b // "b"
some.c // "c"
some.d // "d"
//アクセス修飾子がprivateのためエラーになる
some.e // 'e' is inaccessible due to 'private' protection level