BLOG
ブログ
  • TOP
  • BLOG
  • JAVAのクラスやメソッドのアクセス修飾子について

JAVAのクラスやメソッドのアクセス修飾子について

JAVAのクラスやメソッドのアクセス修飾子について

CONTENT

こんにちは!

9月も中旬に差し掛かりますがまだまだ暑いですね。暑がりの私としては一日も早く秋らしい涼しさになって欲しいところです。


今回は題目にもある通り、JAVAのクラスやメソッドに設定するアクセス修飾子」についてお話したいと思います。


チームの若いメンバーの実装を確認すると、スコープが正しく理解できていない節が見受けられるので、これを機に皆さんにも知って貰えたらと思います!(ほとんどのエンジニアの方には不要な内容かと思いますが・・・。)

まずは「アクセス修飾子」とは何ぞやというところからの説明です。

アクセス修飾子:クラスやメソッドが、どの範囲からアクセス可能であるかを決定するためのもの


JAVAの世界ではこのアクセス修飾子が4つ存在します。公開範囲が広いアクセス修飾子から順に紹介していきます。

◎【public】

・すべてのクラスからのアクセスが可能です。

protected 

・定義した自身のクラス、及びそのクラスを継承したサブクラスからのアクセスが可能です。

(指定無し) 

・定義した自身のクラス、及びそのクラスと同一パッケージからのアクセスが可能です。

private 

・定義した自身のクラスからのみアクセスが可能です。


上記の内容を読むと「全部【public】で定義しておけばどこからも呼び出せるから良いのでは?」と思う人もいるかもしれません。実際に私がJAVA初心者のときはそう思ってしまっていました。(何も考えず全て【public】で定義していたことも・・・。)

ですがよく考えてみて下さい。仮に自身のクラスで使用しないメソッド「sample()」を【public】で定義したとします。仕様変更を経てクラス内の上記メソッドが不要になったとき「【public】で定義されたメソッドだから他でも呼び出しているかも・・・消さずに残しておこう」となり、デッドロジックが稼働モジュールに残ってしまう可能性があります。

ちなみに上記のケースの場合、eclipse等をIDEを使用していると何も警告が出ませんが、【private】で定義していると「未使用メソッド」として警告を出してくれたりもするので、不要な実装が残ってしまうことを容易に防ぐことができます。


ちょっとしたことですが、こういったことを意識することの積み重ねで保守性の高い良いプログラムを作成することができます。

今まであまり意識していなかった人がもしいれば、今後は気にかけるようにして貰えると嬉しいです!