継承の説明をしたところで、今回はカプセル化に重要なアクセス修飾子の紹介をします。個人的には、最初は気にしなくてもいいとおもいますが、クラスが増えてくると重要になるのでここで紹介しておきます。操作法の説明クラス(基本�@)クラス(基本�A)フォームコード継承�@(設計編)アクセス修飾子オーバーライド細かな文法事項アクセス修飾子とはクラス(基本�@)のサンプルコードにこんなのがありました。1;}}メンバの宣言(定義)前についてる「public」というのがアクセス修飾子です。アクセス修飾子の役割は、そのメンバがどこまで参照可能なのかを示しています。「public」は、このメンバがクラスの外から参照できることを表しています。jet.y;jet.moveleft();jet.moveright();jet.moveup();jet.movedown();と、生成したインスタンスのメンバとしてアクセスできることを表しています。実は、publicがないとこのようなメンバへのアクセスが出来ないのです。重要なアクセス修飾子C#には、そのメンバがどこまで公開されているのかを示すアクセス修飾子がいくらかあります。その中でも、よく使う3つのアクセス修飾子を紹介します。同じクラスのメンバからのアクセスのみを許可します。「public」メンバは、どこからでもアクセスが可能です。「インスタンス.メンバ」と生成したメンバからアクセスしたい場合はこの修飾子を選びます。それに対し、「protected」と「private」は関係のあるクラス内からしかアクセスできないため、インスタンスの外側からは参照できなくなります。ちなみに、何も書かない場合はprivateになります。継承�@の例を使って図で表してみるとこんな感じです。Player();」とインスタンスを生成した場合、p.〜とアクセスできるのは「KeyControl()」と「OnDraw()」メソッドの2つのみになります。KeyControlメソッドの中からは、「Move()」と「Shot()」を呼ぶことが出来ます(もちろんOnDraw()も)が、CombatのX,Yを呼ぶことは出来ません。このように、アクセス修飾子をつかって、そのメンバがどこまでアクセスできるかを細かく設定することが出来ます。private・protectedが必要なのか例えば、上の例で、インスタンスpのXやYの値を変えたい場合はどうすればいいのでしょうか。0;」のように外部からアクセスできません。そこで、MoveメソッドにX,Yの値を変更するコードを書いておきます。KeyControl()内でMove()メソッドを呼び出してやれば「p.KeyControl();」で、移動が出来ます。このように、アクセス修飾子を使ってある値にアクセスする方法を制限し、通り道を一本化することが出来ます。アクセス修飾子の機能は分かっていただけたと思いますが、この説明では必要性が感じられないと思います。当然のことながら、全部publicにしておけば、プログラムは動きます。全てpublicにしておけば問題ないでしょう。アクセスの方法を制限をしなくてはいけないのでしょうか。X,Yの値が「0以上100以下」を超えないように処理をしたい場合、その処理をMove()に書いておけばいいでしょう。200;」とやられては全く意味がありません。このように、値を勝手にいじられては困る場合にアクセスを制限するといいことがあります。まとめアクセス修飾子の意味自体は、非常に簡単なものです。その使いどころは結構難しかったりします。クラスの使い方に約束を決める機能だと思うといいでしょうか。コードが長くなってプログラムがぐちゃぐちゃにならないようにうまくアクセスを制限できると、プログラムの構造をすっきりとまとめることができます。次回は継承の話に戻って、オーバーライドとポリモーフィズムの話をします。今回よりは、便利に感じていただけると思います。