TECH I.S.

Java カプセル化


カプセル化

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

  • クラス変数/属性をprivateとして宣言する。
  • 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メソッドは変数名の値を返します。 setメソッドはパラメータ (newName) を受け取り、それをname変数に割り当てます。 thisキーワードは、現在のオブジェクトを参照するために使用されます。

ただし、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()メソッドとsetName()メソッドを使用して変数にアクセスし、変数を更新します。

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メソッドのみを使用する場合) にすることができます。
  • 柔軟性: プログラマは、他の部分に影響を与えることなく、コードの一部を変更できます。
  • データのセキュリティの向上


プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細