Javaパッケージ(パッケージ)
より良いクラスを整理するためには、Javaは、名前空間のクラス名との間の差のパッケージメカニズムを提供します。
パッケージの役割
- 同じパッケージ内のクラスまたはインタフェースの機能類似または関連組織が、見つけるために、容易なクラスを使用します。
- 図2は、同じフォルダのように、パッケージは、ストレージのディレクトリツリーを使用していました。 同じパッケージ名のクラスは、クラスの異なるパッケージ名が同時に同じクラス名で、パッケージの二つの異なるタイプの呼び出し中に、パッケージ名は区別を追加する必要があり、同じであり、異なっています。 このように、パッケージ名は、競合を避けるために。
- 3パッケージには、アクセス権を定義し、クラスは、クラスのパッケージにアクセスするには、パッケージへのアクセス権を持っています。
Javaは、このメカニズムは、名前の衝突、アクセス制御、検索を提供することを防止し、クラス(クラス)、インタフェース、列挙型(列挙型)とコメント(注釈)などを検索するために設計されたパッケージ(パッケージ)を使用しています。
package文の構文は次のとおりです。
package pkg1[.pkg2[.pkg3…]];
例えば、ファイルの内容Something.java
package net.java.util public class Something{ ... }
それはパスネット/ javaの/ utilに/ Something.javaので保存する必要があります。 パッケージ(パッケージ)の役割は、他のJavaプログラムから呼び出すことがより簡単に格納されている別のJavaプログラムを分類することです。
パッケージ(パッケージ)は、これらのタイプのアクセス保護、およびネームスペース管理機能を提供するために相互接続タイプのセット(クラス、インタフェース、列挙、および注釈)のように定義することができます。
ここでは、パッケージ内のJavaのいくつかは、次のとおりです。
- java.lang-パッケージ化された基底クラス
- Java.io-関数は、入力と出力の機能が含まれています
開発者は、クラスとインタフェースの独自のセットを入れて包装し、独自のパッケージを定義することができます。 他のプログラマがより簡単に関連しているどのクラス、インターフェイス、列挙型、およびコメントを判断することができるようにし、実際の開発では、あなたは関連するクラスをグループ化し、実装クラスを完了したときに、そうするように奨励されるべきです。
パッケージはそのように他のパッケージ名と名前の競合をせずに、新しい名前空間(名前空間)を作成して以来。 簡単にアクセス制御を実装し、簡単に関連するクラスを見つけてみましょうするために、このパッケージのメカニズムを使用してください。
パッケージを作成します。
パッケージを作成するには、このパッケージの適切な名前を取る必要があります。 そして、このパッケージ、インタフェース、注釈、または列挙型の提供、他のクラスを含むソースファイル、パッケージ場合は、この宣言は、このソースファイルの先頭に配置する必要があります。
一つだけpackageステートメントを持つことができ、パッケージはソースファイルごとに、ソースファイルの1行目に宣言する必要があり、各タイプのファイルがそれに適用されます。
あなたがソース・ファイルにパッケージステートメントを使用しない場合、などクラス、関数、列挙、コメント、の一つがで無名パッケージ(名前のないパッケージ)に配置されます。
例
動物と呼ばれるパッケージを作成する例を見てみましょう。 一般クラス、インターフェイス、および競合の名前を付けないようにするために小文字を使用。
パッケージ・インターフェース・動物(インターフェイス)に参加:
/* 文件名: Animal.java */ package animals; interface Animal { public void eat(); public void travel(); }
次に、インターフェイスを実装する同じパッケージに追加します。
package animals; /* 文件名 : 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(); } }
そして、これら2つのファイルをコンパイルし、動物という名前のサブディレクトリに入れて。 実行するには、次のコマンドを使用します。
$ mkdir animals $ cp Animal.class MammalInt.class animals $ java animals/MammalInt Mammal eats Mammal travel
輸入のキーワード
パッケージのメンバを使用できるようにするために、我々は、明示的にJavaプログラムでパッケージをインポートする必要があります。 「インポート」ステートメントを使用してこの機能を実行します。
import文は、パッケージステートメントの後に配置する必要がありますJavaのソースファイルでは、すべての以前に定義されたクラスは、あなたが、あなたはまた、複数持つことができないことができ、その構文は次のとおりです。
import package1[.package2…].(classname|*);
パッケージの場合は、別のクラスでは、このパッケージを使用するクラスは、パッケージ名を省略することができます。
例
次の給与パッケージが既にその後ボス給与パッケージにクラスを追加し、Employeeクラスが含まれています。 ボス従業員クラス参照クラスは、ボスクラスは以下の給与プレフィックスインスタンスを使用できない場合。
package payroll; public class Boss { public void payEmployee(Employee e) { e.mailCheck(); } }
クラスは、ボスの給与パッケージがどうなるかでない場合は? ボスクラスは、パッケージ内の他のクラスを参照するには、以下のいずれかの方法を使用する必要があります。
以下のようなクラス記述の完全な名前を使用します。
payroll.Employee
輸入のキーワードの導入により、「*」ワイルドカードを使用します
import payroll.*;
importキーワードを使用すると、従業員クラスを紹介します
import payroll.Employee;
注意:
クラスファイルは、輸入申告の任意の数を含めることができます。 import宣言はクラス宣言の前に、パッケージステートメントの後でなければなりません。
パッケージのディレクトリ構造
パッケージのクラスは、2つの主要な結果になります。
- 我々は前述のようにパッケージ名は、クラス名の一部になります。
- パッケージ名は、同じディレクトリ構造の試合で対応するバイトコードと一致する必要があります。
ここではJavaでファイルを管理する簡単な方法は次のとおりです。
テキスト内のクラス、インターフェイス、およびソースコードの他のタイプは、このファイルの名前は、型の名前、および.javaファイルの拡張子です。 例えば:
// 文件名 : Car.java package vehicle; public class Car { // 类实现 }
独自のパッケージの対応するクラスの次に、ディレクトリ内のソースファイル、ディレクトリ名。
....\vehicle\Car.java
今、正しいクラス名とパスは、次のようになります。
クラス名 - > vehicle.Car
パス名 - >車両\ Car.java(Windowsの場合)
一般的に、同社は例えば、そのパッケージ名としてインターネットドメイン名のその逆の形式を使用しています。インターネットドメインがapple.comで、すべてのパッケージ名はcom.apple初めにあります。 サブディレクトリの一部に相当するそれぞれのパッケージ名。
例:会社はcom.apple.computersに知らDell.javaソースファイルを含むパッケージを、持っている、対応するサブディレクトリ以下の一連のようにする必要があります:
....\com\apple\computers\Dell.java
コンパイル時、コンパイラは別の出力ファイルを作成し、出力ファイル名は、このタイプの名前である各クラス、インタフェースのパッケージタイプで定義され、拡張子.classファイル接尾辞として追加されます。 例えば:
// 文件名: 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のリンゴ\コンピュータ\ \インタフェースで定義されたクラス:
import com.apple.computers.*;
ソース.javaファイルをする必要があり、それらはパッケージの名前に対応するディレクトリに配置された後、.classファイルは、コンパイルされました。 ただし、パスでは、.java同じように対応したパスとの.classファイルを必要としません。 あなたが別のソースとクラスディレクトリを手配することができます。
<path-one>\sources\com\apple\computers\Dell.java <path-two>\classes\com\apple\computers\Dell.class
このように、あなたは他のプログラマにあなたのクラスのディレクトリを共有するのではなく、それらのソースを明らかにすることができます。 このようにソースを管理し、クラスファイルは、コンパイラとJava仮想マシン(JVM)を使用すると、プログラムで使用されるすべてのタイプを見つけることができますせることができます。
クラスパスと呼ばれるディレクトリの絶対パスクラス。 システム変数CLASSPATHに設定します。 コンパイラとクラスパス以降のパス構築の.classファイルにパッケージ名を指定してJava仮想マシン。
<patho-の異形2> \クラスがクラスパスで、パッケージ名はcom.apple.computersで、コンパイラとJVMは.classファイルを見つける<パス2> \クラス\ COM \リンゴの\ comptersになります。
クラスパスには、いくつかのパスが含まれている場合があります。 マルチパスは、区切り文字で区切る必要があります。 デフォルトでは、コンパイラとJVMは、現在のディレクトリを見つけます。 彼らはクラスパス内のディレクトリにデフォルトのように、関連するクラスに応じて、Javaプラットフォームを含むJARファイル。
CLASSPATHシステム変数の設定
現在のCLASSPATH変数を表示するには、次のコマンドを使用します。
- Windowsプラットフォーム(DOSコマンドライン) - > C:\>設定CLASSPATH
- UNIXプラットフォーム(ボーンが下シェル) - >%エコー$ CLASSPATH
- Windowsプラットフォーム(DOSコマンドライン) - > C:\>設定CLASSPATH =
- UNIXプラットフォーム(ボーンが下シェル) - >%CLASSPATHの設定を解除;輸出CLASSPATH
CLASSPATH変数を設定します:
- Windowsプラットフォーム(DOSコマンドライン) - >セットのCLASSPATH = C:\ユーザー\ジャック\ Javaの\クラス
- UNIXプラットフォーム(ボーンが下シェル) - >%のCLASSPATH = /ホーム/ジャック/ javaの/クラス;輸出CLASSPATH