目次
今回は入門者向けにアクセス修飾子について説明を行っていこうと思います。
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で調べてみましょう。
以上