「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > カプセル化とは何か、そしてその使用方法。

カプセル化とは何か、そしてその使用方法。

2024 年 11 月 8 日に公開
ブラウズ:333

What is encapsulation and how to use it.

カプセル化とは何ですか?
Java のカプセル化とは、何かがどのように動作するかの詳細を隠しながら、他の人がそれを使用できるようにすることです。データ (変数など) とメソッド (関数など) をクラスと呼ばれる 1 つの単位にグループ化します。誰もがデータに直接アクセスできるようにする代わりに、データへのアクセス方法や変更方法を制御するメソッド (ゲッターとセッター) を提供します。こうすることで、データを保護し、コードをクリーンで整理された状態に保ち、望まない限り内部の仕組みに手を加えることを防ぎます。

使い方
Java でカプセル化を使用するには、プライベート フィールドを持つクラスを作成し、それらのフィールドにアクセスして変更するためのパブリック メソッド (ゲッターやセッターなど) を提供します。これにより、制御された方法でのみデータを変更できるようになります。たとえば、名前と年齢が非公開の Person クラスを作成する場合は、ゲッターを使用して値を取得し、セッターを使用して値を更新します。その方法は次のとおりです:

public class Person {
    // Private fields
    private String name;
    private int age;

    // Constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

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

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

    // Getter for age
    public int getAge() {
        return age;
    }

    // Setter for age
    public void setAge(int age) {
        if(age > 0) { // Simple validation
            this.age = age;
        } else {
            System.out.println("Age must be positive.");
        }
    }
}

// Using the Person class
public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 25);

        // Accessing fields using getters
        System.out.println(person.getName()); // Output: John
        System.out.println(person.getAge());  // Output: 25

        // Modifying fields using setters
        person.setName("Jane");
        person.setAge(30);

        System.out.println(person.getName()); // Output: Jane
        System.out.println(person.getAge());  // Output: 30
    }
}

詳しく見てみましょう
コードを分解して、各セクションをステップごとに説明してみましょう:

1. プライベートフィールドを使用したクラス定義
public class Person {
    // Private fields
    private String name;
    private int age;
}

説明:

これは、name (文字列) と年齢 (int) という 2 つのプライベート フィールドを定義する Person クラスです。これらのフィールドをプライベートにすることで、他のクラスがフィールドに直接アクセスしたり変更したりできないようにします。これは、オブジェクトの内部状態を隠すというカプセル化の中心的な考え方です。

2. コンストラクター
    // Constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

説明:

コンストラクターは、作成時に Person オブジェクトを初期化します。名前と年齢という 2 つのパラメータを受け取り、これらの値をプライベート フィールドに割り当てます。これにより、新しい Person オブジェクトが作成されるときに、有効なデータから開始されることが保証されます。

3. ゲッターとセッター
    // Getter for name
    public String getName() {
        return name;
    }

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

説明:

コンストラクターは、作成時に Person オブジェクトを初期化します。名前と年齢という 2 つのパラメータを受け取り、これらの値をプライベート フィールドに割り当てます。これにより、新しい Person オブジェクトが作成されるときに、有効なデータから開始されることが保証されます。

4. 年齢のゲッターとセッター (検証あり)
    // Getter for age
    public int getAge() {
        return age;
    }

    // Setter for age
    public void setAge(int age) {
        if (age > 0) { // Simple validation
            this.age = age;
        } else {
            System.out.println("Age must be positive.");
        }
    }

説明:

ゲッター getAge() は名前のゲッターと同じように機能し、年齢フィールドへのアクセスを許可します。
セッター setAge() は、年齢フィールドの変更を許可するだけでなく、検証チェックも追加します。 if 条件により、年齢が正の数の場合にのみ設定されることが保証されます。無効な年齢 (負の数値など) が指定された場合、セッターは更新を阻止し、代わりにメッセージを出力します。これは、カプセル化によってどのような種類のデータを設定できるかを制御できる方法の例です。

5. パーソンクラスの使用
// Using the Person class
public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 25);

        // Accessing fields using getters
        System.out.println(person.getName()); // Output: John
        System.out.println(person.getAge());  // Output: 25

        // Modifying fields using setters
        person.setName("Jane");
        person.setAge(30);

        System.out.println(person.getName()); // Output: Jane
        System.out.println(person.getAge());  // Output: 30
    }
}

説明:

このセクションでは、コンストラクターを使用して Person オブジェクト (人物) を作成します。コンストラクターは、初期名を「John」、年齢を 25 に設定します。

次に、ゲッター (getName() および getAge()) を使用して、名前と年齢の値を出力します。その後、セッター (setName() および setAge()) を使用して値を更新します。最後に、更新された値が再びゲッターを使用して出力されます。

動作中のカプセル化の重要なポイント:

  • データ保護:

    プライベート フィールドは、クラスの外部から直接アクセスしたり、変更したりすることはできません。

  • アクセス制御:

    ゲッターとセッターは、プライベート フィールドにアクセスして変更するための制御された方法を提供します。

  • 検証:

    年齢のセッターは、データを無効な入力から保護するためにルール (例: 年齢は正でなければならない) を適用する方法を示します。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/ife_oluwa/what-is-encapsulation-and-how-to-use-it-207d?1 侵害がある場合は、削除するために[email protected]に連絡してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3