Javaチュートリアル

Javaホーム Javaイントロ Javaはじめに Java構文 Javaコメント Java変数 Javaデータ型 Java型キャスト Java演算子 Java文字列 Java数学 Javaブール値 Java If ... Else Javaスイッチ JavaWhileループ JavaForループ Javaブレーク/続行 Java配列

Javaメソッド

Javaメソッド Javaメソッドパラメータ Javaメソッドのオーバーロード Javaスコープ Java再帰

Javaクラス

Java OOP Javaクラス/オブジェクト Javaクラス属性 Javaクラスメソッド Javaコンストラクタ Java修飾子 Javaカプセル化 Javaパッケージ/ API Javaの継承 Javaポリモーフィズム Java内部クラス Java抽象化 Javaインターフェイス Java列挙型 Javaユーザー入力 Java日付 Java ArrayList Java LinkedList Java HashMap Java HashSet Javaイテレータ Javaラッパークラス Javaの例外 Java RegEx Javaスレッド Javaラムダ

Javaファイル処理

Javaファイル Javaのファイルの作成/書き込み Java読み取りファイル Javaファイルの削除

Javaハウツー

2つの数字を追加する

Javaリファレンス

Javaキーワード Java文字列メソッド Java数学メソッド

Javaの例

Javaの例 Javaコンパイラ Java演習 Javaクイズ Java証明書


Javaカプセル化


カプセル化

カプセル化の意味は、「機密」データがユーザーから隠されていることを確認することです。これを実現するには、次のことを行う必要があります。

  • クラス変数/属性を次のように宣言しますprivate
  • 変数の値にアクセスして更新するためのパブリックget およびsetメソッドを提供しますprivate

取得して設定

前の章から、private変数には同じクラス内でのみアクセスできることを学びました(外部クラスはそれにアクセスできません)。ただし、パブリックgetメソッドとsetメソッドを提供すれば、それらにアクセスすることは可能です。

getメソッドは変数値を返し、メソッドsetは値を設定します。

get両方の構文は、またはのいずれかで始まりset、その後に変数の名前が続き、最初の文字が大文字になります。

public class Person {
  private String name; // private = restricted access

  // Getter
  public String getName() {
    return name;
  }

  // Setter
  public void setName(String newName) {
    this.name = newName;
  }
}

例の説明

このgetメソッドは、変数の値を返しますname

このsetメソッドはパラメーター( )を受け取り、それを変数newNameに割り当て ます。キーワードは、現在のオブジェクトを参照するために使用されますnamethis

ただし、name変数はとして宣言されているため、このクラスの外部からアクセスすることprivateできません。

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

変数がとして宣言されている場合public、次の出力が期待されます。

John

ただし、private変数にアクセスしようとすると、エラーが発生します。

MyClass.java:4: error: name has private access in Person
    myObj.name = "John";
         ^
MyClass.java:5: error: name has private access in Person
    System.out.println(myObj.name);
                  ^
2 errors

代わりに、getName()andsetName()メソッドを使用して、変数にアクセスして更新します。

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.setName("John"); // Set the value of the name variable to "John"
    System.out.println(myObj.getName());
  }
}

// Outputs "John"


なぜカプセル化?

  • クラスの属性とメソッドのより良い制御
  • クラス属性は、読み取り専用(メソッドのみを使用するget場合)または書き込み専用setメソッドのみを使用する場合)にすることができます。
  • 柔軟性:プログラマーは、他の部分に影響を与えることなく、コードの一部を変更できます
  • データのセキュリティの向上