はじめに
こんばんは。またたびです。
記事を書き始めて3日目になりました。
今日も頑張ります。
カプセル化
今日はカプセル化について書いていきます。
作成したクラスに対してアクセスするインターフェースを明確にすることがカプセル化です。
以下にカプセル化の範囲と指定方法を示します。
非常にわかりやすい表が参考文献に記載されているため、そちらを使わせていただきます。
| 名前 | プログラム中の指定方法 | アクセスを許可する範囲 |
|---|---|---|---|
|private|private|自分自身のクラスのみ|
|package private|何も書かない|自分と同じパッケージに属するクラス|
|protected|protected|自分と同じパッケージに属するか、自分の継承をした子クラス|
|public|public|全てのクラス|
これまでmainメソッドを書くときにpublicと付けていたと思いますがこれはカプセル化を用いています。
mainメソッドはプログラムを実行した際に呼び出されるメソッドですので、この部分をprivateにするとエラーになり実行されません。
それではこれから例を用いてstaticの説明をしていきます。
protectedは継承を説明する際に書いていくので今回は触れません。
public class Num{
static int a = 10;
}
この時、privateで定義しているフィールドを別クラスのmainメソッドにて呼び出そうとすると、エラーとなり実行されません。
そのためにゲッターとセッターというメソッドを作成します。
public class Calc{
static int a = 10;
public int getA(){
return this.a;
}
public void setA(int a){
this.a = a;
}
}
このゲッター、セッターメソッドを用いることで、クラスcalcのフィールドaとbの値を呼び出す、書き込むことが出来ます。
面倒くさがって全てをpublicにしていまうと、本当に想定外の場所でフィールドの値が書き換わってしまい、エラーは発生しないので、可能であればフィールドにはprivateを用いたほうがいいと思います。
またこれと同時に、メソッドの引数とクラス内に定義している変数の区別をつけるために、クラス内に定義しているフィールドにはthisをつけたほうがいいと思います。
おわりに
今日は無気力症候群が発生し、何もしていませんでした。
正直記事を書こうか悩んだくらいです。。。
インプットていないため、アウトプットが出来ず分量が少なくて申し訳ありません。。。
でも気合を入れたら書けたのでこの調子で今後も頑張って書いていこうと思います。
次回は後輩に進捗を聞かれそうなので、最近勉強を始めたVue.jsについて書いていきます。
Vue.jsを知らない方にもわかるよう頑張って書いていきます。
今回の記事にもミスや表現の違い等あればご指摘いただけると幸いです。