複数パッケージに分けた記載方法 JavaAPI クラスが読み込まれる仕組み


複数クラスに分けた記載方法

(考え方)
メソッド数が多くなりすぎて、プログラムが複雑になってしまうため、クラス(記載ファイル)を分割することで、より簡潔にプログラムを作成する。
 
(方法)
メソッドの呼出時にクラス名 メソッド名と記載する

(例)
mainクラスの4行目で、keisanクラスのtasuメソッドを呼び出している

mainクラス

public class Main {
    public static void main(String[] args){
      int a = 10; int b = 20;
      int total =  keisan tasu(a,b);//クラス名 メソッド名 指定
      System.out.println(total);
    }
}
keisanクラス

public class keisan {//クラス名 keisan
    public static int tasu(int a, int b){//メソッド名 tasu
      return (a + b);
    }
}

(補足)
必ず最初はメインクラスから呼び出す必要がある

複数パッケージに分けた記載方法

(考え方)
クラス数が多くなりすぎて、プログラムが複雑になってしまうため、パッケージ(フォルダ)を分割することで、より簡潔にプログラムを作成する。
また、異なるパッケージであれば、同じクラス名を使用出来る。
 
(方法)
メソッドの呼出時にパッケージ名 クラス名 メソッド名と記載する

(例〜pkg図〜)

   

(例)

pkg1

package pkg1;

public class Main {
    public static void main(String[] args){
      int a = 10;
      int b = 20;
      int total =  pkg2.keisan.tasu(a,b);//パッケージ名 クラス名 メソッド名 指定
      System.out.println("足したら"+total);
    }
}



(補足)
パッケージ名 クラス名 メソッド名と記載しているクラスのことを、完全限定クラス(FQCN)という。

pkg2

package pkg2;//自分の所属するパッケージ名 pkg2

public class keisan {//クラス名 keisan
    public static int tasu(int a,int b){//メソッド名 tasu
      return (a + b);
    }
}

パッケージ名作成時のルール

(考え方)
世界中で開発が行われているため、被らない様に以下のルールがある。
 
(ルール)
保有するインターネットドメインを前後逆にしたもの

(例)
メールドメイン:abcd.co.jp
パッケージ名:jp.co.abcd

完全限定クラス名の省略

(考え方)
異なるパッケージのクラスを使用する場合、パッケージ名の入力を省略出来る。

(方法)
importパッケージ名.クラス名;

(例)pkg2は複数パッケージに分けた記載方法と同じ内容のため、省略。


package pkg1;

import pkg2.keisan;//importするパッケージ名の指定

public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int total = keisan.tasu(a, b);//pkg2の記載が不要になる

        System.out.println("足したら" + total);
    }
}

(補足)

そのパッケージの全てのクラスをimportしたい場合は、import パッケージ名.*;と記載する。

Java APIについて

(考え方)
・Javaには、API(アプリケーションプログラムインターフェイス)というのが元々あって、200以上のパッケージや3,500以上のクラスがある。
java.langパッケージは、使用頻度が多いためimportしなくても、デフォルトで使用可能。
java.langパッケージに所属する代表的なメソッドに、System.out.printlnなどがある。

クラスが読み込まれる仕組み

・JVMがクラスローディングを実行し、クラスファイルを読み込む。
・クラスローディングは必要な時に、必要な分だけ読み込むという仕組みに基づいている。
・JVMの中で、クラスローダーという部分が、ファイルを探している。
・この時、JVMは使いたいクラス名は指定するが保存場所は指定しない。
・クラスローダーはクラスパスという、あらかじめ指定された場所を探す事で、高速検索を実現している。