LoginSignup
3

More than 1 year has passed since last update.

アクセス修飾子まとめ【Swift】

Posted at

はじめに

コードを書く際にあまり意識していなかったのと、理解が曖昧だったので備忘録として投稿します。

アクセス修飾子とは?

アクセス修飾子とは、クラスや関数等にアクセス制限を設けるために利用します。

internal

  • 同じモジュール内であればアクセスすることができる。

モジュールとは

モジュールとはimportして読み込んで利用するFrameworkを作成するための仕組み。

private

  • 一番制約の厳しいアクセス修飾子。
  • 同じファイル内からのアクセスのみ許可されている。
  • クラス単位ではなく、ファイル単位のアクセス制御であることに注意がいる。( Swift4からextensionprivateプロパティにアクセスできるようになった。)

fileprivate

  • 同じファイル内からのアクセスのみ許可されている。

public

  • 別のモジュールからでもアクセスできる。
  • 継承やオーバーライドが不可能

open

  • 別のモジュールからでもアクセスできる。
  • 継承やオーバーライドが可能

アクセス修飾子の使い分け

アクセスレベルを特に意識しない場合

  • 何もつけない or internal

アクセスレベルを意識する場合

  • public・・・別のモジュールからも使えるようにしたい
  • open・・・別のモジュールからも使えて、継承やオーバーライドさせたい。
  • private・・・実装を他からは隠したい。
  • fileprivate・・・実装を他からは隠したいが、特定のコード間では共有したい。

補足

fileprivateを使うよりprivateにして、共有したいコードを同じソースファイルにextensionを使ってまとめるほうがいい。

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3