包装のため、パッケージには、それは彼らのプロパティとメソッドの目的は、それがその操作を完了することができ、他のオブジェクトに依存しないです。
パッケージを使用する3つの利点があります。
図1に示すように、良好なカプセル化は、カップリングを低減することができます。
図2に示すように、クラスの内部構造を自由に変更することができます。
図3は、メンバーのより正確な制御を可能にします。
4、隠された情報、実装の詳細。
パッケージは、文字通り、それは独立したエンティティの不可欠な部分を構成するようにデータを抽象データ型を保護されて、一緒に包装操作データに基づいて抽象データ型とデータの使用で、パッケージングの意味は、情報隠蔽点は、プロであることを理解され内部には、外部との接触を作るために、外部インタフェースの一部だけを保持したまま、内部の詳細できるだけ隠されました。操作からデータを包むことによって通信し、カプセル化されたオブジェクトとだけ相互作用するシステムの他の目的は、許可されています。つまり、オブジェクト(もちろん、知らない)の内部の詳細を知る必要がないユーザーですが、外部オブジェクトが提供するインタフェースを介してオブジェクトにアクセスすることができます。
以下は、パッケージを使用しての例です。
/ *ファイル名:EncapTest.java * / パブリッククラスEncapTest { プライベート文字列名; プライベート文字列IDNUM。 プライベートint型の年齢; 公共int型getAge(){ 戻り値の年齢。 } パブリック文字列のgetName(){ 戻り名。 } パブリック文字列getIdNum(){ IDNUMを返します。 } 公共ボイドsetAge(INTニューエイジ){ 年齢=ニューエイジ。 } 公共ボイドのsetName(文字列NEWNAME){ 名前= NEWNAME。 } 公共ボイドsetIdNum(文字列NEWID){ IDNUM = NEWID。 } }
クラスの外部からのパブリックアクセスは、入口にクラスフィールドです。典型的には、これらの方法は、ゲッターとセッターとして定義されます。だから、ゲッターとセッターを使用するために、他のクラス内のクラス変数にアクセスしたいです。
次のようにEncapTestクラス変数にアクセスすることができます。
/ *ファイル名:RunEncap.java * / publicクラスRunEncap { 公共の静的な無効メイン(文字列引数[]){ EncapTest ENCAP =新しいEncapTest()。 encap.setName( "ジェームズ")。 encap.setAge(20)。 encap.setIdNum( "12343ms"); System.out.print( "名:" + encap.getName()+ "年齢:" + encap.getAge()); } } //这将产生下述结果: 名前:ジェームズ・年齢:20
- クラスフィールドは読み取り専用または書き込み専用に設定することができます。
- それは完全に内部に保存されたどのようなクラスのフィールドを制御することができます。
- ユーザーは、クラスのタイプは、データを格納する方法であるかわかりません。ユーザーが任意のコードを変更する必要がある前に、クラスは、クラスのデータ型のフィールドを変更することができます。