個人的な勉強のためにまとめました
インポート宣言/パッケージ宣言
パッケージの目的
パッケージの目的は3つ
①名前空間を提供し、名前の衝突を避ける
②アクセス修飾子と組み合わせてアクセス制御機能を提供する
③クラス分類を提供する
①は、もし、クラス名が重複してしまうとコンパイラやJVMは、どちらのクラスを利用すればよいか判断できないので、このような事態を防ぐために、コンパイラやJVMは、クラスを「パッケージ名.クラス名」の完全修飾クラス名で扱うから
※慣習としてドメイン名を逆にしたものがパッケージ名に使われる
②は、クラスを複数のパッケージに分けると、パッケージ単位でアクセス制御ができるようになる
例)publicなSampleクラスの宣言
package jp.co.xxx;
public calss Sample{
//any code
}
例)Testクラスの宣言
package jp.co.xxx;
calss Test{
//any code
}
公開・非公開に分けることで、設計者が意図しないクラスが不用意に使われることを防ぐ
③は、パッケージは、ディレクトリ構造とマッピングされるので、多数のクラスを分類整理することができ、ソフトウェアの管理が容易になる
パッケージのインポート
・インポート宣言することで、パッケージ名を省略してクラス名だけで記述することができる
・java.langパッケージは基本的なクラスがまとめられたパッケージであり、頻繁に利用するためインポート宣言を省略することができる
・アスタリスク「*」を使ってそのパッケージに属するクラスすべて利用することがインポートできる
例)java.utilパッケージに属する全クラスのインポート宣言
import java.util.*;
・ただし、指定したパッケージに属するクラスに限定されるので、サブパッケージに属するクラスがインポートされることはない
staticインポート
・本来、staticなフィールドやメソッドは、クラス名.フィールド名やクラス名.メソッド名の書式で、どのクラスに定義されているものか明示しなければいけない
これをフィールド名やメソッド名だけで省略表記できるようにするための宣言がstaticインポート
・staticインポートは、import staticに続けて、省略表記したいフィールドやメソッドの完全修飾クラス名を記述する
例)staticインポート宣言
import static jp.co.xxx.Sample.num
←Sampleクラスのstaticなフィールドをインポート
import static jp.co.xxx.Sample.print
←Sampleクラスのstaticなメソッドをインポート
・staticメソッドをインポート宣言するときは、メソッドだけを記述し、カッコ「()」や引数などは記述しない
・オーバーロードされた同名のメソッドが複数あった場合はオーバーロードのルールが適用されるので、メソッドの数だけインポート宣言したり、引数を指定したりする必要はない
・インポートしたクラスに、インポートされたメソッドやフィールドと同名のものがあった場合、そのインポートは無視される