LoginSignup
0
0

More than 1 year has passed since last update.

[Java] 基礎的なカプセル化について

Last updated at Posted at 2022-06-21

はじめに

Javaの学習のまとめです
以前にもざっくりとしたまとめを書きましたが、今回はカプセル化に絞って投稿しています。

かなりオススメします

とてもわかりやすいし、説明がすんなり入ってきます。
なぜ使うのか・いつ使うのかも含めて丁寧に説明してくれているのでJava学習をはじめたばかりの方はぜひ!
わかりやすいように構成が考えられているようで、その時その時に必要な情報を出してくれるのでパンクしないで済みます。
また、オブジェクト指向についても解説してくれていますので曖昧な方もぜひ!

アクセス修飾子

クラス・メンバ変数・メソッドの公開範囲を指定できる

修飾子 同クラス 同パッケージ サブクラス その他
public
protected
(無し)
private

カプセル化

メンバ変数は隠蔽private
クラスとメソッドは公開publicにする設計方針のこと

privateで宣言した変数を呼び出したい時はgetterメソッドget変数名();かsetterメソッドset変数名();で取得する
直接stu.変数名だとコンパイルエラーになる

メリット
  • 代入前処理
    正しい値かどうかを代入前にチェックできる

例)メンバ変数に値を設定するとき

Student.java
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;
  • プログラムの修正範囲が狭まる
    例)上のscoremathScoreengScoreに変更したいというとき
    private指定していればStudentクラスにしかそのメンバ変数はいないはずなので修正箇所はそのクラス内だけで済む

最後に

閲覧いただきありがとうございました!

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0