【Java】カプセル化について

こんにちは、kazuです。
本日はカプセル化について
解説していきたいと思います。

カプセル化とは何か

まずカプセル化とはなにかわかりますか?
カプセル化とはクラスの中にフィールドとメソッドをひとまとめにして、
保護したいメンバにprivateをつけて勝手にアクセスできなく機能のことを
カプセル化と呼びます。
んーちょっとわかりづらいですね!
もうちょっと簡単に言うと特定の方法を使わないと
そのクラスの実行方法が使えない方法となるのが
カプセル化です。
その特定の方法という言うのがsetterとgetterを使っての方法となります。

カプセル化の使い方

ではカプセル化の使い方を実際に見ていきましょう!
カプセル化に使用するのは
privateを使っていきます。
実はjavaにはprivateの他にpublicという物が存在します。
何が違うのか遠いいますと。
privateは他からのアクセスをする事ができない
publicというのが他のクラスからのアクセスからも受ける事ができます。
では実際にprivateを使ったカプセル化のコードを見ていきましょう!

// mainクラス

class main
{
  // privateクラスにすることにより、カプセル化にする。
  private int num ;
  private double gas;
  
  // SetNumGasによってnumとgasが引き渡される
  public void setNumGas(int n, double g)
  {
    num = n ;
    gas = g ;
    if(g > 0 && g < 100){         //0より上100より下
      System.out.println("この車のナンバーは" + num + "に設定しました!");
      System.out.println("この車のガソリン量は" + gas + "lに設定しました!");
    }
    else {
      System.out.println("この車のガソリン量は" + gas + "lに変更できませんでした。");
      System.out.println("異常値ですので再度ご確認よろしくお願いします。");
    }
  }
  public void show()
  {
    System.out.println("車のナンバープレートの番号は" + num + "です!");
    System.out.println("この車のガソリン量は" + gas + "lです!");
  }
}
  
// carConfigクラス

class carConfig
{
  public static void main(String[] args)
  {
  main toyota = new main();
  
  toyota.setNumGas(1234, 35.5);
  toyota.show();
  
  System.out.println("ガソリン量の異常値を指定してみます");
  
  toyota.setNumGas(5678, -20.5);
  toyota.show();
  }
}
//  実行結果
この車のナンバーは1234に設定しました!
この車のガソリン量は35.5lに設定しました!
車のナンバープレートの番号は1234です!
この車のガソリン量は35.5lです!
ガソリン量の異常値を指定してみます
この車のガソリン量は35.5lに変更できませんでした。
異常値ですので再度ご確認よろしくお願いします。

こちらがカプセル化という形になっていきます。
privateで今回はSetNumGasという値が使われてそしてmainに渡されています
javaの開発で使用される形になりますので、覚えておいてくださいね!
ちなみにですが、なぜカプセル化などという物が必要かと言いますと
大規模開発などを行って自由にアクセスできてしまうと大変ですよね
異常な値となってエラーの原因になります
そのような時にもカプセル化というのは便利になるのです!

最後に

いかがでしたでしょうか?
カプセル化のことが少しわかりましたでしょうか?
カプセル化だけでなく本当はいろいろなメンバ変数や
getter,setterなどの意味も知ると良いのですが、、、
次の機会にします!
最後までご覧頂きありがとうございました。

関連記事

こんにちは、kazuです。 本日はオーバーライドについて 解説していきます。 オーバーライドとは オーバーライドとは、クラスを継承した時に継承元になっているスーパークラス(親クラス)で定義されているメソッドを、継承したサブクラス(子[…]

関連記事

こんにちは、kazuです。 今回はjavaの継承について 解説していきたいと思います。 継承とは何か? 最初に継承とは何かということについてです。 継承とは今あるクラスに追加の機能として新たなクラスを作成することをいいます。 少[…]