Swift3からアクセス制御が変わった点について

こんにちは。最近Swiftを勉強なのでメモ書きレベルで覚えたことや気付いたことについて少し書きたいと思います。

最近XCode8と共にswiftアクセス制御に変化がありました。
openfileprivateが追加され、既存のpublicprivateの意味も変わっています。

swift3の以前は、

  • public:すべてのソースファイルからアクセス可能
  • internal: 同じモジュール内でアクセス可能
  • private: 同じフィアル内でアクセス可能

だったのが、swift3になって新しいものが追加され、従来あったものにも意味が少し変わっています。

open

同じモジュールまたは、モジュールをインポートした他のモジュールからアクセス可能。そして継承、オーバライドもできる。

public

openと同じく全てのモジュールからアクセス可能。しかし、継承とオーバーライドは同じモジュールのみ可能

internal

同じモジュールのみアクセス可能。(デフォルト)

fileprivate

同じソースファイル内部でアクセス可能

private

宣言したスコープのみアクセス可能

 

ちなみに、Objective-C クラスはopenでインポートされる。finalはアクセスキワードと一緒に使って継承、オーバライドを制限することができます。(openでは使えないらしいです。)

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

トラックバック・ピンバック

トラックバックはありません。

トラックバック URL