パッケージ: クラスの集合
例: java.util.ArrayList という表現は、java の標準的ライブラリの一つである java.util というパッケージに属する ArrayList というクラスを意味する。
java.util.ArrayList は、java/util/ArrayList.class に対応している
Java標準のライブラリは、実際にはこのディレクトリの情報を保持している、いくつかのファイルにまとめられている(jar形式)。
標準では、カレントディレクトリからパッケージを探しはじめる
Class1.class foo/Class2.class
このような配置の場合、foo というパッケージに Class2 が属していることになるので、Class1.java では Class2 のことを foo.Class2 と書けばよい。
パッケージを探す場所は、java, javac のオプション -classpath で変更できる。デフォルトは、-classpath . である。-classpath の指定とは関係なく、Java標準のライブラリはいつでも参照される。
package を使う
package java.lang;
これは、このクラスがjava.langに属することを宣言している
.class ファイルの場所は java/lang/ の中にする必要がある。
属するパッケージとともにクラスを指定すればいい
java.util.ArrayList list = new java.util.ArrayList();
次のように import 文を使用すると、パッケージ名を省略することができる
import java.util.ArrayList; ArrayList list = new ArrayList();
import では、「*」を使った指定ができる
import java.util.*;
この指定で、java.util.ArrayList, java.util.LinkedList,...などがすべて指定されたことになる。
ただし、「*」はディレクトリの階層をたどらないので、java.util.foo.Class は import されない
パッケージによる、変数/コンストラクタ/メソッドのアクセス制限
どこからアクセス可能か?