例を使用した Java OOP でのカプセル化
Java のカプセル化とは?
Java でのカプセル化 変数(データ)とメソッド(コード)を一つの単位としてまとめる仕組みです。これは、情報の詳細を隠し、データとオブジェクトの動作を保護するプロセスです。これは、4 つの重要な OOP 概念の 1 つです。 encapsulate クラスはテストが簡単なので、単体テストにも適しています。
このチュートリアルでは、次のことを学びます-
- Java のカプセル化とは
- 例でカプセル化を学ぶ
- Java でのデータ隠蔽
- Java のゲッター メソッドとセッター メソッド
- 抽象化とカプセル化
- Java でのカプセル化の利点
ビデオにアクセスできない場合は、ここをクリックしてください
例でカプセル化を学ぶ
カプセル化とは何かを詳細に理解するには、deposit メソッドと show balance メソッドを持つ次の銀行口座クラスを検討してください
class Account { private int account_number; private int account_balance; public void show Data() { //code to show data } public void deposit(int a) { if (a < 0) { //show error } else account_balance = account_balance + a; } }
ハッカーが銀行口座のコードにアクセスできたとします。今、彼は 2 つの方法であなたの口座に -100 を入金しようとしています。彼の最初の方法またはアプローチを見てみましょう。
アプローチ 1: 彼はコードを操作して、あなたの銀行口座に無効な金額 (たとえば -100) を入金しようとします。
さて、問題は – それは可能ですか? 調べてみましょう。
通常、クラス内の変数は以下のように「private」に設定されています。クラスで定義されたメソッドでのみアクセスできます。他のクラスやオブジェクトはそれらにアクセスできません。
データ メンバーがプライベートの場合、同じクラス内でのみアクセスできることを意味します。外部クラスは、他のクラスのプライベート データ メンバーまたは変数にアクセスできません。
したがって、私たちの場合、ハッカーはあなたのアカウントに -100 を入金することはできません。
アプローチ 2 :ハッカーの最初のアプローチでは、金額の入金に失敗しました。次に、彼は「deposit」メソッドを使用して、-100 の金額を入金しようとします。
ただし、メソッドの実装には負の値のチェックがあります。したがって、2 番目のアプローチも失敗します。
したがって、データを外部に公開することはありません。これにより、アプリケーションが安全になります。
コード全体はカプセルと考えることができ、メッセージを介してのみ通信できます。したがって、名前のカプセル化.
Java でのデータ隠蔽
Java でのデータ隠蔽 クラスの変数を他のクラスから隠しています。現在のクラスのメソッドを介してのみアクセスできます。実装の詳細をユーザーから隠します。しかし、データを隠すだけでなく、関連するデータをより適切に管理またはグループ化することを目的としています。
Java でカプセル化の程度を下げるには、「protected」や「public」などの修飾子を使用できます。カプセル化により、開発者は他の部分に影響を与えることなく、コードの一部を簡単に変更できます。
Java のゲッターとセッター
Java のゲッターとセッター は、変数の値を取得および更新するために使用される 2 つの従来の方法です。これらは主に、変数値の作成、変更、削除、および表示に使用されます。セッター メソッドは値の更新に使用され、ゲッター メソッドは値の読み取りまたは取得に使用されます。これらは、アクセサーおよびミューテーターとしても知られています。
次のコードは、getter メソッドと setter メソッドの例です:
class Account{ private int account_number; private int account_balance; // getter method public int getBalance() { return this.account_balance; } // setter method public void setNumber(int num) { this.account_number = num; } }
上記の例では、getBalance() メソッドは変数 account_balance の値を読み取る getter メソッドであり、setNumber() メソッドは変数 account_number の値を設定または更新する setter メソッドです。
抽象化とカプセル化
多くの場合、カプセル化は抽象化と誤解されています。勉強しましょう-
- カプセル化は、機能を実現するための「方法」に関するものです
- 抽象化とは、クラスで「何ができるか」に関するものです。
この違いを理解するための簡単な例は、携帯電話です。回路基板の複雑なロジックがタッチ スクリーンにカプセル化され、それを抽象化するインターフェイスが提供されます。
Java でのカプセル化の利点
- カプセル化とは、データを関連する機能にバインドすることです。ここで、機能は「メソッド」を意味し、データは「変数」を意味します
- そのため、変数とメソッドを 1 か所にまとめています。その場所が「クラス」です。クラスはカプセル化のベースです。
- Java カプセル化を使用すると、コード内の重要なデータ メンバーを非表示 (アクセスを制限) できるため、セキュリティが向上します
- 前に説明したように、データ メンバーが「プライベート」と宣言されている場合、同じクラス内でのみアクセスできます。外部クラスは、他のクラスのデータ メンバー (変数) にアクセスできません。
- ただし、これらの変数にアクセスする必要がある場合は、public の「getter」と「setter」を使用する必要があります メソッド。
Java