004.2. [★]アクセス修飾子とは


クラスを扱っていく時に大事になるのがアクセス修飾子、これは主にセキュリティ・バグを抑えるためにあります。

この記事はオブジェクト指向についてある程度理解している人向けです。

プログラミング初心者向けの記事ではないので、プログラミング初心者の方はむしろ読まないほうがいいです。

アクセス修飾子とは

アクセス修飾子は、そのメソッドやクラスなどのメンバーがどこからならアクセスできるのかを定義します。

大雑把に分けてpublicとinternal,privateにわかれます。まずはその比較表を見てみましょう

同じクラスから 同じプログラムから プログラムの外から
public
internal ×
private × ×

publicをつければどこからでもアクセスできます。言い換えれば、序盤はpublicをつけておけば間違いないです。

privateについて

まずはprivateの説明です。同じクラス内からのみアクセスできます。

このように、クラスの外からはアクセスできないですが、同じクラスからならアクセスできます。

privateはクラスの中からのみ使うもの。そしてクラスの外からは使わせたくない、または使う必要のないものに設定します。

internalについて

internalは同じプログラムからならどこからでもアクセスできます。

プログラムを書いてコンパイルした後も外からアクセスされる恐れがあります。なので、外からアクセスされることを目的に作ってない場合は、基本的にinternalかprivateを設定することになります。

publicについて

逆に外からアクセスされるのを目的に作る場合はpublicをつけることになります。

また今後出てきますが、ライブラリを作成する時なんかによく使いますね。

ただ、外から使われたくないものもありますよね。セキュリティに関わることならなおさらです。その時はinternal以下のアクセス修飾子をつけるように心がけましょう

まとめ

privateは同じクラスからのみ

internalは同じプログラムからのみ

publicはどこからでもアクセスできる

publicつけておけば間違いはないけど、セキュリティ面では問題がある