構文の切り替え:アクセス制御[こうぶんのきりかえ:あくせすせいぎょ]


アクセス制御

  • 隠匿化

  • ファイル間、モジュール間のアクセスを制限できます

  • モジュール(モジュール)→秒単位で並べ替えるコードのグループ単位
    ex)Framework、Library、Applicationなど...importキーワードで読み込む
  • アクセスレベル
  • アクセス制御は、アクセスレベルキーワードにより
  • を実現することができる.
  • クラス、構造体、列挙型、Property、メソッド、頭文字Riserは、
  • にアクセスできます.
    Keyword:
  • open
  • public
  • internal
  • fileprivate
  • private
  • Access Level
    公開アクセスレベル:Public
  • はどこでも利用可能
  • は、主にFrameworkにおいて外部に接続するインタフェース
  • を実現するために使用される.
    オープン・アクセス・レベル:Open
  • パブリック・アクセス・レベルが
  • より高い
  • クラスおよびクラスのメンバーのみが
  • を使用できます.
  • Open Classは、クラスのモジュール以外の他のモジュールを定義するために使用することができ、
  • を再定義することができる.
    内部アクセス・レベル-内部
  • デフォルトデフォルトデフォルトデフォルトデフォルトデフォルトは、すべての要素のデフォルトメソッドレベル(別途マークする必要はありません)
  • です.
  • ソースファイルが属するモジュールは、
  • を使用できます.
  • 外部モジュールは
  • にアクセスできません.
    ファイル外部専用アクセスレベル-fileprivate
  • 要素を含むソースファイルでのみ使用できます.
    プライベートアクセスレベル-private
  • 最も限られた範囲
  • は、その機能の定義および実装の範囲内でのみ使用可能である
  • .
  • 同じソースファイルで実装他のタイプまたは機能も、
  • を使用することができない.
    注意:public、openは「高いアクセスレベル」、fileprivateは「低いアクセスレベル」を表します.
    アクセス制御実施上の注意事項
  • ルール:「子要素は親要素より高いアクセスレベルを持つことはできません」
  • ex)私有構造内部のpropertyとして開き、公開設定不可
    private class AClass{
    
    	//AClass 가 private이기 때문에 someMethod 도 private으로 취급 
    	public func someMethod(){
    	...
    	}
    }
  • tupleの内部要素タイプは、tupleの近接レベルと同じまたはそれ以上である必要があります.
  • 以下にはできません
    internal class InternalClass { }
    private struct PrivateStruct { }
    
    public var publicTuple: (first: InternalClass, second: PrivateStruct) 
    												= (InternalClass(), PrivcateStruct())
    //InternalClass 와 PrivateStruct 의 Access Level 이 public 보다 낮기 때문에 사용 불가
    
    private var privateTuple: (first: InternalClass, second: PirvateStruct)
    												= (InternalClass(), PrivateStruct())
    //Access Level 이 같거나 높기 때문에 사용 가능
    Private & fileprivate
    private:
  • 同じファイルで他のタイプのコード
  • にアクセスできません.
  • 拡張コードが同じファイルに存在する場合、
  • にアクセスできます.
    fileprivate:
  • などのファイルは、任意のコードから
  • にアクセスできます.