アクセス制御について | のんびりした人の日記

のんびりした人の日記

仕事の愚痴とアニメ関連のことを書いていきます。

みなさんオブジェクト指向プログラミングをやっている方ならご存知のアクセス修飾子。

けど、僕は勉強はしていたのですが理解があんまりできていなかったのです。そんなんでずるずる来てしまって、Javaの勉強をしていた時にはそこら辺を完全に考慮外でやってましたw

カプセル化の機能を全く生かしきれていなかったので、C#を勉強したときにはそこらへんの理解もちゃんとしたいと思っていたので、今回はブログにきちんと記録を残してケータイとかでも復習できるようにしたいと思います。

勉強のために買った本が独習C#ですからねw持ち運びなんてしたくはありませんしw


んなわけで、初歩のところでpublicとprivateについて。

まずは、どんな所からでもアクセスができるということを表すpublic。これがついている変数やメソッド(メンバーというべきなのでしょうか)にはプログラムのあらゆる部分からアクセスすることができます。

よくやるところでは、メインメソッドを定義しているクラスとは別のクラスのメンバーにpublicが付いている時には、そのメンバーにメインメソッド内でアクセスして値を代入とかしてみたりメソッドを使ってみたりできるという感じですよね。


まぁ、これはこれでかなり使い勝手がいいというか、「ここでこのメンバーを使いたい」と思った時には、そのメンバにすぐアクセスすればいいだけですもんね。

けど、「他のクラスの変数やメソッドからはアクセスしてほしくない」というときもありますよね。人間関係でいえば「中学の時の友達なら家に来ても問題ないけど、高校の時の友達は家には来てほしくない」的な感じ?・・・・・・・なんか違うかww

けど、かなり仲がよくてお互いがお互いを信頼している関係でしたら自分の部屋のものをすこし替えたりとかしても問題はないですよね(たぶん)。あとは部屋のゲームハードで遊んだりとかしても。

それをC#のプログラムに置き換えてみて考えてみたらどうでしょう。

地元の公民館とかはだれが入ってもいいし、遊具とかも自由に使っていい感じですよね。まさにpublic!!(無理やりすぎる?w)

けど、自分の部屋とかではどうでしょうね。まず、かなり仲のいい友達しか部屋には呼ばないし、遊ぶにしても部屋の中のものだけでどうにかしようと思いますよね。こちらはprivate!!って感じじゃないですか。


まぁ説明は結構強引な感じでしたが、簡単なイメージづけとしては僕にとってはいい感じだと思います。

んで、以上のことを独習C#では以下のように書いています。

「privateなメンバーにはそのクラスの他のメンバーからは自由にアクセスできるが、そのクラスの外部のコードからはアクセスできない。」

要は本当に自己完結型という感じですかね。そのクラスからの持ち出しは禁止!アクセスしたいならクラス内でどうにかしなさい!という。なんか小学校とか中学校の時にありそうな宿題が終わるまで帰さない先生みたいw


んで、最後に。

アクセス修飾子はつけても付けなくても大丈夫ですが、付けなかった場合にはそのメンバーはprivateになるということですね。見た目で公的な施設なのか民家なのかわからん時には入ろうとするな、という感じwwまぁんな場所入りたくもないけどww


こんな感じで勉強メモを作っていきます。