はじめに
Kotlin, Swiftや他言語で開発を行っていると、正確なアクセス修飾子の意味について忘れることがある。
都度調べていたが、特によく使うKotlin/Swiftの両言語のアクセス修飾子についてまとめてみる。
アクセス修飾子
Kotlin
アクセス修飾子 | 意味 |
---|---|
public | どのクラスからでも見れる。デフォルト ※1 |
internal | 同一モジュールからならどこからでも見れる ※2 |
private | クラス内にのみ公開 |
protected | サブクラスに公開 |
※1. Kotlinの場合、アクセス修飾子を省略するとpublic扱いとなる。デフォルトはpublic
※2. アプリ内(=同一パッケージのはず)であればpublicもinternal同じ意味となる。
例えば、ライブラリ化したときにhogehoge.jarを作ったとして、
hogehogeライブラリ内にinternalな変数へはライブラリ外からはアクセスできないことになる。
Swift
アクセス修飾子 | 意味 |
---|---|
open | どのファイル/モジュールからでもアクセス可能。継承やオーバーライドも可能。 |
public | どのファイル/モジュールからでもアクセス可能。ただし、継承やオーバーライドは不可 |
internal | 同一モジュールからならどこからでも見れる デフォルト ※3 |
fileprivate | 同じファイル内であればアクセスすることができる |
private | クラス内にのみ公開 |
※3. Swiftの場合、アクセス修飾子を省略するとinternal扱いとなる。デフォルトはinternal
最後に
デフォルトのアクセス修飾子が異なったり、微妙に言語仕様が異なるので注意が必要。
毎回忘れて調べ直すことになっていたので、まとめることができて良かった。