‫お帰りなさい｡
‫このビデオでは､ アクセスの許可と禁止を可能にするアクセスモディファイアについてお話したいと思います｡
‫そして､ アクセスモディファイアをもう少し理解し､ その理由を知るためには､ ある概念について調べる必要があります｡
‫そこでまず
‫フィールドやメソッドにアクセス修飾子を付けることは､ オブジェクト指向プログラミングの一部であり､
‫コードの安全性を高めるとともに､ OPの一部であるカプセル化の重要な要素でもあります｡
‫これが何を意味するのか､ オブジェクト指向プログラミングでもう少し詳しく見ていくことにする｡
‫C言語のような言語では､ シャープカプセル化は､ 関連するが異なる2つの概念のうちの1つを指すために使用され､
‫時にはそれらの組み合わせも含まれます｡
‫つまり､ オブジェクトの変数やメソッドといった構成要素の一部への直接アクセスを制限するための言語メカニズム､
‫データとそのデータを操作するメソッドや他の機能とのバンドル化を促進する言語構成です｡
‫そのため､ 例えばセッターやゲッターを使うことで､ プログラム全体をより安全にすることができます｡
‫このビデオで紹介するさまざまなことを可能にするプロパティについて､ もっと詳しく見ていきましょう｡
‫わかりました｡
‫そこでまず､ アクセス修飾子､ private､ privateはクラスやコンストラクトの内部でしかアクセスできない｡
‫つまり､ プライベート変数やプライベートメソッドを作ると､ 同じクラスや構造体の中でしか使えなくなるのです｡
‫だから､ 他では使えない｡
‫では､ 例としてクラスoneにprivate int hとprivate void walkというメソッドがある場合を見てみましょう｡
‫この場合､ メソッドは何もしませんが､ そこに何らかのコードが含まれている可能性があります｡
‫そして､ 2番目のクラスであるクラス2の中に､ 1番目のクラスと呼ばれるオブジェクトを作成するのです｡
‫そして､ その最初のクラスのオブジェクトのエッジ（18）にアクセスしたいのです｡
‫しかし､ 残念ながらプライベートなことなので､ それはできません｡
‫そのため､ この変数にアクセスすることはできませんが､ walkメソッドについても同じことが言えます｡
‫非公開に設定されているため､ アクセスできない｡
‫そのため､ 他のクラスからアクセスすることはできません｡
‫クラス1内でのみ使用可能です｡
‫そして､ プロジェクト内のどこからでもアクセスできるようにするためのpublic access修飾子があります｡
‫つまり､ 変数やメソッドにpublicを使用すると､ プロジェクト内のすべてのクラスで使用することができるのです｡
‫全く制限されません｡
‫これです｡
‫再び public int h と public void の例｡
‫ここで変数とメソッドを歩き､ クラス2でそれらにアクセスしてみると､ この場合は全く問題なく動作します｡
‫だから､ どこからでもアクセスできるのです｡
‫だから､ クラス2でももちろん使える｡
‫そして､ protectedというアクセス修飾子があり､ この修飾子によって､ そのクラスとそのクラスから派生するすべてのクラスから何かにアクセスできるようにすることができます｡
‫だから､ それを本当に活用するためには､ OPを理解すること､ あるいはオブジェクト指向プログラミングを理解することが重要なのです｡
‫そこで､ このprotected int h 18とprotected void walkを用意しました｡
‫この場合､ クラス1を継承したクラス2があり､ Hにアクセスできることがおわかりいただけると思います｡
‫私たちのクラス1のオブジェクトを作る必要さえないのです｡
‫そのため､ あたかもパブリックであるかのように､ 変数に直接アクセスすることができるのです｡
‫つまり､ protectはpublicと同じですが､ 同じクラスとそれを継承するクラスに対してのみ適用されます｡
‫walkも同様なので､ ここでも簡単にwalkのメソッドがそのまま使える｡
‫そして､ アクセスモディファイアです｡
‫内部変数と内部メソッドは､ そのアセンブリからしかアクセスできないので､ 同じネームスペースや同じプロジェクトからしかアクセスできません｡
‫つまり､ 名前空間があれば
‫その時､ 複数のクラスがあるのはいつですか？
‫すべてのクラスは内部変数と内部メソッドにアクセスすることができます｡
‫では､ アクセス修飾語を正しく使うにはどうしたらよいのでしょうか｡
‫ですから､ 新しいクラス・メンバーやメソッドを宣言するときは､ 最初に最も制限の厳しいアクセス修飾子を指定し､
‫必要なときにそれを緩和することをお勧めします｡
‫だから､ すべてをできる限り非公開にする｡
‫そして､ 変数やメソッドが他の場所で使われる必要がある場合は､ もちろん少し緩和する必要があります｡
‫そうすると､ 例えば､ internal､ protected､ あるいはpublicを使うことができます｡
‫では､ なぜアクセス修飾子を使う必要があるのでしょうか｡
‫メソッドと変数を完全にコントロールできるんだ｡
‫非常に基本的な例としては､ H.
‫そこで､ Hを設定できるようにしたいとします｡ Hをパブリックにすると､ 誰でもage変数を変更することができ､ すべてのクラスが､ たとえその値がまったく意味をなさないとしても､
‫h変数に変更することができるようになるのです｡
‫だから､ 誰かがHを-20とか-25とか入力することができるんだ｡
‫しかし､ privateで変数を制御する場合､ つまり､ セッターとゲッターしか持たない場合や､ 後で行うようにプロパティを使用する場合､
‫この年齢変数に､ 値が設定されていると､ 意味がないことを確認することができます｡
‫例えば､ マイナス1を掛けただけのマイナスの値や､ 150や130を超えるような値であれば､
‫ゼロのようなものを設定したり､ 不正な名前のものを設定したり､ エラーを投げたり､ 不正な値を表示したりすることができるわけです｡
‫入力してください､ 他のものを入力してください｡
‫また､ 例えば､ 不正確な値を処理する必要のある適切なソフトウェアや従業員に通知するようなルーチンを開始することも可能です｡
‫これは例として､ あなたができることですが､
‫他にもできる例はたくさんあります｡
‫そこで､ Xモディファイアやカプセル化などの概念をもう少し調べてみようということです｡