パッケージ(package) - packageキーワードAdvertisementクラスをパッケージに割り当てる
説明のために2つのTableクラスを定義する
クラスTable(机)
class Table{
private String material = "Wood";
private int capacity = 4;
}
クラスTable(表)
class Table{
private int row = 4;
private int column = 3;
}
この時点では明示的にパッケージを指定していないので、各クラスはデフォルトパッケージに属することになる。そして、デフォルトパッケージ内に同名のクラスが複数存在することになるため、コンパイル時にエラーとなる。上記2つのクラスを同じファイル内に記述して定義。
C:\>javac Table.java
Table.java:6: クラス Table が重複しています。
class Table{
^
エラー 1 個
package
パッケージ指定はpackageキーワードを使用して、クラスファイルの先頭に記述する。パッケージは階層型になっていて、ピリオド(.)で区切って指定する。ファイルとフォルダの関係のようなイメージである。
また、上記の定義だけでは、異なるパッケージ同士の階層指定が同じになってしまう可能性がある。パッケージを使用してクラス名の衝突を回避しても、パッケージ名を一意にしなければパッケージの衝突が起きてしまい、意味がなくなってしまう。そこで、Java言語指定では、以下の項目を推奨している。
com.ayumu-baby.634となり、その下に階層を作成してクラスを分類することになる。 com.ayumu-baby.634.database com.ayumu-baby.634.web もちろん、パッケージにドメイン名を使用しなくてもプログラムは作成できる。 myproject.database myproject.common.util 机を表すTableクラスに対してパッケージを指定する。
package com.ayumu-baby.634.furniture
class Table{
private String material = "Wood";
private int capacity = 4;
}
表を表すTableクラスに対してもパッケージを指定する。
package com.ayumu-baby.634.format
class Table{
private int row = 4;
private int column = 3;
}
これで各パッケージは
com.ayumu-baby.634.furniture.Table com.ayumu-baby.634.format.Tableとなり、クラスの衝突は発生しない。このパッケージ名からの表記を完全限定名という。 Advertisement |
ショートカット・634・このカテゴリのトップページに戻る ・634labs UIコレクションギャラリー サイト検索Y!ログール |