さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

Java入門者向け!アクセス修飾子について

f:id:y_saiki:20171025000902j:plain

 

目次

 
今回は入門者向けにアクセス修飾子について説明を行っていこうと思います。
 

1.アクセス修飾子とは

ざっくり言いますと、メソッドやクラス、属性へのアクセスを制限するためのものになります。
 
クラスの「○○○ class Sample {~」やメソッドの「○○○ void sampleMethod(){~」などについている「○○○」の部分ですね
 

2.なぜアクセス修飾子を使うのか

これは適切にカプセル化を行うことです。
カプセル化とはこのクラスはどのメソッドや、どの属性にアクセスすることが可能であるかを限定させます。
そのため、そのクラスで外部に公開したくないデータや操作などを制限できるのでバグ発生率の少ないプログラムとして機能させることが可能になるわけです。
そのクラスに定義されているからと言ってなんでもかんでも他者に利用されていたら意図しない不具合を起こしかねませんしね。
 

3.アクセス修飾子について

アクセス修飾子には以下の3つがあります¥。
 
・public
・protected
・private
 
また、アクセス修飾子を省略することも可能です。
その場合は、現在のクラスとそのクラスが属しているパッケージ内のクラスからのみアクセス可能です。
 

3-1.public

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

3-2.protected

現在のクラスとそのサブクラスからアクセス可能です。
 

3-3.private

現在のクラスの中のみからアクセス可能です。
 

4.アクセス修飾子の使い方

上記でも記載されていますが、
クラスならば「public class Sample {~」のような感じ、メソッドならば「protected void sampleMethod(){~」のような感じになります。
属性であれば「private String sampleStr;」な感じです。
 
 

5.最後に

実装する際にこれは他のクラスから呼び出されるものであるか?または、このメソッドは自分自身で利用するものであるのか?などを考えながら実装すれば自ずとどの修飾子を適用すればよいかが見えてくるはずです。
 
補足としてオブジェクト指向での流儀ですが、属性の修飾子は基本privateです。
そうなると外部からどうやってアクセスするの?
と入門者の方は疑問を抱くかもしれません。
これに関しては直接参照しなければよいのです。
つまり、それらにアクセスするメソッドを用意して間接的にアクセスしてあげればよいのです。
この間接的にアクセスメソッドをアクセッサメソッドなどと呼びます。
 
気になる方は上記の用語をgoogleで調べてみましょう。
 
 
以上