はじめに
Javaの学習のまとめです
以前にもざっくりとしたまとめを書きましたが、今回はカプセル化に絞って投稿しています。
かなりオススメします
とてもわかりやすいし、説明がすんなり入ってきます。
なぜ使うのか・いつ使うのかも含めて丁寧に説明してくれているのでJava学習をはじめたばかりの方はぜひ!
わかりやすいように構成が考えられているようで、その時その時に必要な情報を出してくれるのでパンクしないで済みます。
また、オブジェクト指向についても解説してくれていますので曖昧な方もぜひ!
アクセス修飾子
クラス・メンバ変数・メソッドの公開範囲を指定できる
修飾子 | 同クラス | 同パッケージ | サブクラス | その他 |
---|---|---|---|---|
public | ◯ | ◯ | ◯ | ◯ |
protected | ◯ | ◯ | ◯ | |
(無し) | ◯ | ◯ | ||
private | ◯ |
カプセル化
メンバ変数は隠蔽private
クラスとメソッドは公開public
にする設計方針のこと
privateで宣言した変数を呼び出したい時はgetterメソッドget変数名();
かsetterメソッドset変数名();
で取得する
直接stu.変数名
だとコンパイルエラーになる
メリット
- 代入前処理
正しい値かどうかを代入前にチェックできる
例)メンバ変数に値を設定するとき
class Student {
private int score;
public void setScore(int s) {
score = s;
}
}
というクラスがあったとするとscore
に入る整数は0点~100点
setScoreメソッド
の頭にif文でif (0 <= s && s <= 100)
と処理をしておけば有効な数字以外は自動で弾かれ、代入しなくて済む
逆にscoreに直接代入できてしまうとこれは出来ずに500点でも代入されてしまう
︙
// 有効な数字は代入される
stu.setScore(80);
// 無効な数字は代入されないで済む(setScoreメソッドの処理を変更している前提)
stu.setScore(500);
// 有効・無効関係なく代入される
stu.score = 500;
- プログラムの修正範囲が狭まる
例)上のscore
をmathScore
とengScore
に変更したいというとき
private
指定していればStudentクラスにしかそのメンバ変数はいないはずなので修正箇所はそのクラス内だけで済む
最後に
閲覧いただきありがとうございました!