があらのメモ帳

プログラミングで気になったこと

全部publicじゃダメなの?アクセス修飾子について

アクセス修飾子とは、メソッドやメンバ変数、クラスなどにアクセス権を持たせてあげることである

アクセス修飾子の種類は
public     全てのクラスからアクセス可能
protected   同じクラス内、同じパッケージ、サブクラスからアクセス可能
なし     同じクラス内、同じパッケージからアクセス可能
private    同じクラス内のみアクセス可能

他のクラスからアクセス修飾子がなし(デフォルト)のメンバ変数を使おうと思っても「publicじゃないとダメ!」とエラーがでる。

それなら別に全部publicでよくね?

一人でちょっとしたプログラムを書くなら全部publicで問題ない!

しかし…複数で大規模なプログラムを書くとなると話は別でアクセス修飾子は重要になる。
この値を他のクラスから弄くられると正常に動かなくなるみたいな値をprivateにしておくと安心できる。

アクセス修飾子はどう使い分けるの?

基本的にpublicとprivateぐらいしか使わない。(自分だけかもしれないが…)

クラスまたはメソッドの場合
 他のクラスで使うと思うのはpublic、そうじゃないのはprivate
 (クラスの場合は一つのソースファイルに1つしか書けない)

メンバ変数の場合
 定数以外は基本的にprivate

コンストラクタの場合
 基本的にpublic

基本的に見せないで、機能を提供したい所だけ見せる。
こんな感じに自分は使い分けている。