importは楽する仕組みです。
同一パッケージ内にないクラスを使用する時につかいます。
##分かりやすく説明するために例を1つあげることにしました。
とある高校受験会場で3人の受験生が面接を受けています。
その時の3人の挨拶が以下の通りです。
Aさん「東京都立、新宿中学校、普通科より参りました、Aと申します。」
Bさん「東京都立、新宿中学校、普通科より参りました、Bと申します。」
Cさん「東京都立、新宿中学校、普通科より参りました、Cと申します。」
3人とも「東京都立、新宿中学校、普通科」まで同じ事を言ってますね。
もし、事前に同じ都立の同じ中学校、同じ学科から来た受験生が面接を受ける事がわかっていれば
面接官「東京都立、新宿中学校、普通科のみなさん、どうぞ」
Aさん「Aと申します。」
Bさん「Bと申します。」
Cさん「Cと申します。」
となるはずです。
##javaのプロジェクトで再現してみます!
importdemonstration/
├──Jukensei.java //Aさん~Eさん※イメージ
├──Mensetu.java //面接会場※イメージ
Jukensei.javaの記述はこんな感じになります。
package tokyo.school.course;
public class Jukensei{
public static void studentA(){
System.out.println("studentA");
}
public static void studentB(){
System.out.println("studentB");
}
public static void studentC(){
System.out.println("studentC");
}
}
つぎに面接会場を再現してみましょう!
Mensetu.javaの記述をしていきます。
package mensetu;
public class Mensetu{
public static void main(String[] args) {
tokyo.school.course.Jukensei.studentA(); //東京都立、新宿中学校、普通科より参りました、Aと申します。
tokyo.school.course.Jukensei.studentB(); //東京都立、新宿中学校、普通科より参りました、Bと申します。
tokyo.school.course.Jukensei.studentC(); //東京都立、新宿中学校、普通科より参りました、Cと申します。
}
}
これがさっきの例で話していた事です。
tokyo(東京都立).school(新宿中学校).course(普通科).Jukensei(クラス名).studentA()(Aと申します)
いわゆる完全修飾クラス名で記述しています。
完全修飾クラス名中の「ピリオド(.)」は、ディレクトリ区切りを意味します。
ある種「フルパス」ということになるみたいです。
それではimportを使用して書き換えてみることにします。
package mensetu;
import tokyo.school.course.Jukensei; //面接官「東京都立、新宿中学校、普通科のみなさん、どうぞ」
public class Mensetu{
public static void main(String[] args) {
Jukensei.studentA(); //Aさん「Aと申します。」
Jukensei.studentB(); //Bさん「Bと申します。」
Jukensei.studentC(); //Cさん「Cと申します。」
}
}
実行結果は変わりません。
つまり、importは「1個所で宣言する」ということです。
##Eclipseを使用した場合のimport
importを記述せず、いきなり"Jukensei.studentA()"と記述するとエラーがでます。
ですがEclipseには「エラー解決支援」という素晴らしい機能が存在します。
また、Eclipseの便利機能の「入力支援(途中まで入力後"Ctrl+space")」を使用する事で適切なimportしてくれます。
##あとがき
うまく説明できていなかったらごめんなさい。
まとめるのに時間がかかりましたが、正確に記述できていなかったらごめんなさい。