最も革新的なものの1つ パッケージの概念です。Javaのパッケージは、クラス、インターフェース、列挙、アノテーション、およびサブパッケージのグループをカプセル化する方法です。概念的には、Javaパッケージはコンピューター上のさまざまなフォルダーに似ていると考えることができます。このチュートリアルでは、パッケージの基本について説明します。
この記事で取り上げるトピックは次のとおりです。
Javaのパッケージとは何ですか?
Javaパッケージは、機能に基づいて、類似したタイプのクラス、インターフェース、およびサブクラスをまとめてグループ化するメカニズムです。ソフトウェアがで書かれているとき 、それは数百または数千の個別のクラスで構成することができます。私関連するクラスとインターフェイスをパッケージに配置することで、物事を整理しておくことは理にかなっています。
コーディング中にパッケージを使用すると、次のような多くの利点があります。
- 再利用性: 別のプログラムのパッケージに含まれているクラスは簡単に再利用できます
- 名前の競合: パッケージクラスを一意に識別するのに役立ちます。たとえば、 company.sales.Employee そして company.marketing.Employee クラス
- 制御されたアクセス: オファー アクセス保護 pなどrotectedクラス、デフォルトクラス、プライベートクラス
- データのカプセル化 : 彼らはpクラスを非表示にする方法を削除し、他のプログラムが内部使用のみを目的としたクラスにアクセスできないようにします
- メンテナンス: パッケージで、プロジェクトをより適切に整理し、関連するクラスを簡単に見つけることができます
Javaでコーディングするときにパッケージを使用することをお勧めします。プログラマーとして、あなたはできます簡単に理解する 、関連するインターフェース、列挙、および注釈。 Javaには2種類のパッケージがあります。
Javaのパッケージの種類
パッケージがユーザーによって定義されているかどうかに基づいて、パッケージは2つのカテゴリに分類されます。
- 組み込みパッケージ
- ユーザー定義パッケージ
組み込みパッケージ
組み込みパッケージまたは事前定義されたパッケージは、の一部として提供されるパッケージです。 (Java Development Kit)Javaプログラマーのタスクを簡素化します。これらは、JavaAPIの一部である膨大な数の事前定義されたクラスとインターフェースで構成されています。一般的に使用される組み込みパッケージには、java.lang、java.io、java.util、java.appletなどがあります。組み込みパッケージを使用した簡単なプログラムを次に示します。
パッケージEdurekaimport java.util.ArrayList class BuiltInPackage {public static void main(String [] args){ArrayList myList = new ArrayList(3)myList.add(3)myList.add(2)myList.add(1)システム。 out.println( 'リストの要素は次のとおりです:' + myList)}}
出力:
リストの要素は次のとおりです。[3、2、1]
ArrayListクラスはjava.utilパッケージに属しています。これを使用するには、importステートメントを使用してパッケージをインポートする必要があります。コードの最初の行 java.util.ArrayListをインポートします java.utilパッケージをインポートし、 これはサブパッケージutilにあります。
ユーザー定義パッケージ
ユーザー定義パッケージは、関連するクラス、インターフェース、およびサブパッケージをグループ化するためにユーザーによって開発されたパッケージです。サンプルプログラムの助けを借りて、パッケージを作成し、パッケージ内でJavaプログラムをコンパイルし、それらを実行する方法を見てみましょう。
Javaでパッケージを作成する
Javaでパッケージを作成するのは非常に簡単な作業です。パッケージの名前を選択し、 パッケージ Javaソースファイルの最初のステートメントとしてのコマンド。 Javaソースファイルには、パッケージに含めるクラス、インターフェイス、列挙、およびアノテーションタイプを含めることができます。たとえば、次のステートメントは、という名前のパッケージを作成します MyPackage。
package MyPackage
packageステートメントは、定義されたクラスがどのパッケージに属するかを指定するだけです。
注意: packageステートメントを省略すると、クラス名は名前のないデフォルトのパッケージに入れられます。デフォルトのパッケージは短いプログラムには問題ありませんが、実際のアプリケーションには不十分です。
Javaパッケージにクラスを含める
にパッケージ内にクラスを作成する必要がありますプログラムの最初のステートメントとしてパッケージ名を宣言します。次に、クラスをパッケージの一部として含めます。ただし、クラスは1つのパッケージ宣言しか持てないことに注意してください。これは、概念を理解するための簡単なプログラムです。
package MyPackage public class Compare {int num1、num2 Compare(int n、int m){num1 = n num2 = m} public void getmax(){if(num1> num2){System.out.println( '2の最大値数値は '+ num1)} else {System.out.println(' 2つの数値の最大値は '+ num2)}} public static void main(String args []){Compare current [] = new Compare [3] current [1] = new Compare(5、10)current [2] = new Compare(123、120)for(int i = 1 i<3 i++) { current[i].getmax() } } }
出力:
2つの数値の最大値は10です。2つの数値の最大値は123です。
ご覧のとおり、MyPackageという名前のパッケージを宣言し、そのパッケージ内にクラスCompareを作成しました。 Javaは、ファイルシステムディレクトリを使用してパッケージを格納します。したがって、このプログラムは次のようにファイルに保存されます Compare.java MyPackageという名前のディレクトリに保存されます。ファイルがコンパイルされると、Javaは 。クラス ファイルを作成し、同じディレクトリに保存します。パッケージの名前は、このファイルが保存されているディレクトリと同じである必要があることに注意してください。
別のパッケージのクラスからこのCompareクラスを使用する方法を疑問に思うかもしれませんか?
別のパッケージをインポートしながら、パッケージ内にクラスを作成する
ええと、それはとても簡単です。あなたはそれをインポートする必要があります。インポートされると、名前でアクセスできます。これは、コンセプトを示すサンプルプログラムです。
パッケージEdurekaimport MyPackage.Compare public class Demo {public static void main(String args []){int n = 10、m = 10 Compare current = new Compare(n、m)if(n!= m){current.getmax ()} else {System.out.println( '両方の値が同じ')}}}
出力:
両方の値は同じです
私は最初にパッケージを宣言しました Edureka 、次にクラスをインポートしました 比較する パッケージMyPackageから。だから、注文別のパッケージをインポートしているときにパッケージ内にクラスを作成する場合は、
- パッケージ宣言
- パッケージのインポート
importステートメントを使用したくない場合は、別のパッケージからパッケージのクラスファイルにアクセスする別の方法があります。インポート中に完全修飾名を使用できます 。
クラスのインポート中に完全修飾名を使用する
概念を理解するための例を次に示します。ブログで以前に宣言したものと同じパッケージを使用します。 MyPackage 。
package Edureka public class Demo {public static void main(String args []){int n = 10、m = 11 //インポートの代わりに完全修飾名を使用するMyPackage.Comparecurrent = new MyPackage.Compare(n、m)if( n!= m){current.getmax()} else {System.out.println( '両方の値が同じ')}}}
出力:
2つの数値の最大値は11です
Demoクラスでは、パッケージをインポートする代わりに、次のような完全修飾名を使用しました。 MyPackage.Compare そのオブジェクトを作成します。パッケージのインポートについて話しているので、Javaでの静的インポートの概念を確認することもできます。
Javaでの静的インポート
静的インポート機能はで導入されました バージョン5以降。Javaプログラマーが静的にアクセスしやすくなります。完全修飾名を使用せずに直接クラスのメンバー。
package MyPackage import staticjava.lang.Math。* // static import import staticjava.lang.System。* // static import public class StaticImportDemo {public static void main(String args []){double val = 64.0 double sqroot = sqrt(val)// sqrt()メソッドに直接アクセスしますout.println( 'Sq。rootof' + val + 'is' + sqroot)// 'System.outを使用する必要はありません}}
出力:
スクエア64.0のルートは8.0です
静的インポートを使用するとコーディングが少なくなりますが、静的インポートを使いすぎると、プログラムが読み取れなくなり、保守できなくなる可能性があります。それでは、次のトピックであるパッケージのアクセス制御に移りましょう。
Javaパッケージのアクセス保護
Javaのアクセス制御メカニズムとそのさまざまな側面を知っているかもしれません アクセス指定子 。 Javaのパッケージは、アクセス制御に別の次元を追加します。クラスとパッケージの両方が データのカプセル化 。パッケージはクラスやその他の従属パッケージのコンテナとして機能しますが、クラスはデータとコードのコンテナとして機能します。パッケージとクラスの間のこの相互作用のために、Javaパッケージはクラスメンバーの可視性の4つのカテゴリに対応します。
- 同じパッケージ内のサブクラス
- 同じパッケージ内の非サブクラス
- 異なるパッケージのサブクラス
- 同じパッケージにもサブクラスにも含まれていないクラス
以下の表は、Javaでパッケージを使用する場合に、どのタイプのアクセスが可能で、どのタイプのアクセスが不可能かについての実際の状況:
民間 | 修飾子なし | 保護されています | 公衆 | |
同階級 | はい | はい | はい | はい |
同じパッケージサブクラス | 番号 | はい | はい | はい |
同じパッケージの非サブクラス | 番号 | はい | はい | はい |
さまざまなパッケージサブクラス | 番号 | 番号 | はい | はい |
異なるパッケージ非サブクラス | 番号 | 番号 | 番号 | はい |
上記の表のデータは次のように簡略化できます。
- パブリックと宣言されたものはどこからでもアクセスできます
- プライベートと宣言されたものはすべて、そのクラス内でのみ表示できます
- アクセス指定子が言及されていない場合、要素はサブクラスだけでなく、同じパッケージ内の他のクラスにも表示されます
- 最後に、保護された要素として宣言されたものはすべて、現在のパッケージの外部に表示されますが、クラスを直接サブクラス化するクラスにのみ表示されます。
このように、Javaパッケージはクラスへのアクセス制御を提供します。これで、Javaのパッケージの概念は終わりです。でパッケージを使用する際に留意すべきいくつかのポイントがあります 。
スキャナークラスの使い方
覚えておくべきポイント
- すべてのクラスはいくつかのパッケージの一部です。 packageステートメントを省略すると、クラス名はデフォルトのパッケージに入れられます
- クラスは1つのパッケージステートメントのみを持つことができますが、複数のインポートパッケージステートメントを持つことができます
- パッケージの名前は、ファイルが保存されているディレクトリと同じである必要があります
- 別のパッケージをインポートする場合、パッケージ宣言を最初のステートメントにし、その後にパッケージをインポートする必要があります
これで、この「Javaのパッケージ」の記事は終わりです。私達は学んだパッケージとは何か、なぜそれらを使用する必要があるのか。 Javaパッケージが効率的なJavaプログラマーにとって最も重要な部分の1つであることは間違いありません。プログラマーのコーディングスタイルをアップグレードするだけでなく、多くの追加作業を削減します。
「Javaのパッケージ」に関するこの記事を見つけた場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。私たちはあなたの旅のすべてのステップであなたを助けるためにここにいます、このJavaインタビューの質問に加えてなるために、私たちはJava開発者になりたい学生と専門家のために設計されたカリキュラムを考え出します。