工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java-パッケージ

パッケージは Java で使用され、名前の競合を防ぎ、アクセスを制御し、クラス、インターフェース、列挙、および注釈の検索/配置と使用を容易にするなどの目的で使用されます。

パッケージ アクセス保護と名前空間管理を提供する、関連する型 (クラス、インターフェース、列挙、注釈) のグループとして定義できます。

Java の既存のパッケージのいくつかは −

プログラマーは独自のパッケージを定義して、クラス/インターフェースなどのグループをバンドルできます。プログラマーがクラス、インターフェース、列挙、および注釈が関連していることを簡単に判断できるように、実装した関連クラスをグループ化することをお勧めします。

パッケージは新しい名前空間を作成するため、他のパッケージの名前と名前が競合することはありません。パッケージを使用すると、アクセス制御が簡単になり、関連するクラスを見つけるのも簡単になります。

パッケージの作成

パッケージの作成中に、パッケージの名前を選択し、パッケージを含める必要があります パッケージに含めるクラス、インターフェース、列挙型、および注釈型を含むすべてのソース ファイルの先頭に、その名前と共にステートメントを記述します。

package ステートメントは、ソース ファイルの最初の行にする必要があります。各ソース ファイルに含めることができる package ステートメントは 1 つだけで、ファイル内のすべての型に適用されます。

package ステートメントが使用されていない場合、クラス、インターフェース、列挙型、および注釈型は現在のデフォルト パッケージに配置されます。

package ステートメントで Java プログラムをコンパイルするには、以下に示すように -d オプションを使用する必要があります。

javac -d Destination_folder file_name.java

次に、指定されたパッケージ名のフォルダーが指定された場所に作成され、コンパイルされたクラス ファイルがそのフォルダーに配置されます。

animals というパッケージを作成する例を見てみましょう。 .クラスやインターフェースの名前との競合を避けるために、小文字のパッケージ名を使用することをお勧めします。

次のパッケージの例には、animals という名前のインターフェースが含まれています −

/* File name : Animal.java */
package animals;

interface Animal {
   public void eat();
   public void travel();
}

では、上記のインターフェースを同じパッケージ animals に実装しましょう。 −

package animals;
/* File name : MammalInt.java */

public class MammalInt implements Animal {

   public void eat() {
      System.out.println("Mammal eats");
   }

   public void travel() {
      System.out.println("Mammal travels");
   } 

   public int noOfLegs() {
      return 0;
   }

   public static void main(String args[]) {
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
} 

以下に示すようにJavaファイルをコンパイルします-

$ javac -d . Animal.java 
$ javac -d . MammalInt.java

animals という名前のパッケージ/フォルダー は現在のディレクトリに作成され、これらのクラス ファイルは以下に示すようにそこに配置されます。

以下に示すように、パッケージ内のクラス ファイルを実行して結果を取得できます。

Mammal eats
Mammal travels

インポート キーワード

クラスが同じパッケージ内の別のクラスを使用したい場合、パッケージ名を使用する必要はありません。同じパッケージ内のクラスは、特別な構文なしでお互いを見つけます。

ここでは、Boss という名前のクラスが、Employee が既に含まれている給与パッケージに追加されます。次の Boss クラスで示されているように、Boss は給与接頭辞を使用せずに Employee クラスを参照できます。

package payroll;
public class Boss {
   public void payEmployee(Employee e) {
      e.mailCheck();
   }
}

従業員クラスが給与パッケージに含まれていない場合はどうなりますか? Boss クラスは、別のパッケージ内のクラスを参照するために、次のいずれかの方法を使用する必要があります。

payroll.Employee
import payroll.*;
import payroll.Employee;

注意 − クラス ファイルには、インポート ステートメントをいくつでも含めることができます。 import ステートメントは、package ステートメントの後、クラス宣言の前に配置する必要があります。

パッケージのディレクトリ構造

クラスがパッケージに配置されると、2 つの主要な結果が生じます −

Java でファイルを管理する簡単な方法は次のとおりです −

クラス、インターフェイス、列挙型、または注釈型のソース コードを、名前が型の単純な名前で拡張子が .java のテキスト ファイルに入れます。 .

たとえば-

// File Name :  Car.java
package vehicle;

public class Car {
   // Class implementation.   
}

次に、クラスが属するパッケージの名前を反映した名前のディレクトリにソース ファイルを配置します −

....\vehicle\Car.java

さて、修飾されたクラス名とパス名は次のようになります-

一般に、企業はパッケージ名に逆インターネット ドメイン名を使用します。

− 企業のインターネット ドメイン名が apple.com の場合、そのすべてのパッケージ名は com.apple で始まります。パッケージ名の各コンポーネントは、サブディレクトリに対応しています。

− この会社には、Dell.java ソース ファイルを含む com.apple.computers パッケージがあり、このような一連のサブディレクトリに含まれていました −

....\com\apple\computers\Dell.java

コンパイル時に、コンパイラは、定義されているクラス、インターフェイス、および列挙ごとに異なる出力ファイルを作成します。出力ファイルのベース名は型の名前で、拡張子は .class です。 .

たとえば-

// File Name: Dell.java
package com.apple.computers;

public class Dell {
}

class Ups {
}

次に、-d オプションを使用して次のようにこのファイルをコンパイルします −

$javac -d . Dell.java

ファイルは次のようにコンパイルされます −

.\com\apple\computers\Dell.class
.\com\apple\computers\Ups.class

\com\apple\computers\ で定義されているすべてのクラスまたはインターフェイスをインポートできます 次のように-

import com.apple.computers.*;

.java ソース ファイルと同様に、コンパイルされた .class ファイルは、パッケージ名を反映する一連のディレクトリにある必要があります。ただし、.class ファイルへのパスは、.java ソース ファイルへのパスと同じである必要はありません。次のように、ソースディレクトリとクラスディレクトリを別々に配置できます-

<path-one>\sources\com\apple\computers\Dell.java

<path-two>\classes\com\apple\computers\Dell.class

これを行うことで、ソースを公開せずにクラス ディレクトリへのアクセス権を他のプログラマに与えることができます。また、コンパイラと Java 仮想マシン (JVM) がプログラムで使用するすべての型を検出できるように、ソース ファイルとクラス ファイルをこの方法で管理する必要があります。

クラス ディレクトリへのフル パス \classes はクラス パスと呼ばれ、CLASSPATH システム変数で設定されます。コンパイラと JVM の両方が、クラス パスにパッケージ名を追加することで、.class ファイルへのパスを構築します。

\classes がクラス パスで、パッケージ名が com.apple.computers であるとすると、コンパイラと JVM は \classes\com\apple\computers で .class ファイルを探します。

クラスパスには複数のパスが含まれる場合があります。複数のパスは、セミコロン (Windows) またはコロン (Unix) で区切る必要があります。デフォルトでは、コンパイラと JVM は現在のディレクトリと Java プラットフォーム クラスを含む JAR ファイルを検索し、これらのディレクトリが自動的にクラス パスに含まれるようにします。

CLASSPATH システム変数の設定

現在の CLASSPATH 変数を表示するには、Windows および UNIX (Bourne シェル) で次のコマンドを使用します −

CLASSPATH 変数の現在の内容を削除するには、-

を使用します。

CLASSPATH 変数を設定するには −


Java

  1. Python パッケージ
  2. Java 最終キーワード
  3. オペレーターの Java インスタンス
  4. Java 継承
  5. Java ネストされた静的クラス
  6. Java匿名クラス
  7. Java シングルトン クラス
  8. Java リフレクション
  9. Java ObjectOutputStream クラス
  10. Javaジェネリック
  11. Java ファイル クラス