今回はプログラミング言語Javaに関する、
パッケージについて書き溜めます。
パッケージはオブジェクト指向のカプセル化に関する概念なので
情報機科学初心者のマイルストーンとして残しておく。
概要
パッケージ (package) とは?
名前空間を分けるためのフォルダ
まず、簡潔に言い表すと、
パッケージとは、クラスをグループ分けするための仕組みのこと です。
同名のクラスを、パッケージごとに分けることで別のものとして利用できるようになります。
グループ分けされたクラスは「完全限定名」として表現されます。
(パッケージ名.クラス名)
Randomというクラス名を、utilパッケージと、customパッケージのそれぞれに属させると
同じ名前でも別の処理を記述することができるようになります。
- それぞれは、別の名前空間を持つ
- util.Random
- custom.Random
*パッケージといっているがその実態はフォルダである。
フォルダ構造をイメージすればイメージはしやすく、パッケージは階層構造となる。
フォルダ構造をイメージすればイメージはしやすく、パッケージは階層構造となる。
パッケージの中にクラスを作るとき
パッケージの中にクラスを作るための手順は下記のようなステップである。
- パッケージ名として、フォルダをつくる
- フォルダ内にクラス名でファイルを作成する
- クラスの先頭に「package パッケージ名;」を宣言
1 2 3 4 5 6 |
package tool; // toolパッケージに属するクラスであると宣言 public class Knife{ public static void main(String[] args){ System.out.println("tool.Knife"); } }</pre> |
パッケージの中のクラスを使うとき
パッケージの中のクラスを使うための手順は下記のようなステップである。
- 完全限定名またはアスタリスクでimport宣言する
これだけ。
1 2 3 4 5 6 7 8 9 10 11 |
package cooking; // cookingパッケージに属するクラスであると宣言 import tool.Knife; // toolパッケージ内のKnifeクラスをインポートする。 [完全限定名] import food.*; // // foodパッケージ内の全クラスをインポートする。 [アスタリスク] public class Main{ public static void main(String[] args){ Knife k = new Knife(); Cabbage c = new Cabbage(); //foodパッケージ内の全クラスをインポートしているので利用可能 System.out.println("cut cabbage"); } } |
パッケージ概念におけるアクセス修飾子
パッケージにおいては、クラスやフィールドに対するアクセス修飾子が重要になってくる。
アクセス修飾子については過去記事「アクセス修飾子のまとめ(private、protected、public)」を参照されたい。
基本的なところだが、
頭にいれておきたい。
じゃあね〜〜〜〜。