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

WBOY
リリース: 2024-09-08 16:30:33
オリジナル
616 人が閲覧しました

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() は name のゲッターと同じように機能し、年齢フィールドへのアクセスを許可します。
セッター 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()) を使用して値を更新します。最後に、更新された値が再びゲッターを使用して出力されます。

実際のカプセル化のキーポイント:

  • データ保護:

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

  • アクセス制御:

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

  • 検証:

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

以上がカプセル化とは何か、そしてその使用方法。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート