[備忘録 その２] Java Silver ～Javaプログラミング基礎～

# パッケージとインポート

## パッケージ
パッケージとはJavaプログラムにおいて関連するクラスやインタフェースをまとめるための仕組みです。パッケージはフォルダのようなものであり、関連するクラスやインターフェースを階層的に整理し、名前の衝突を避けることができます。これにより、大規模なプロジェクトでも管理しやすくなります。

例えば、‘com.example.myproject’ というパッケージには、‘com.example.myproject.PaymentProcessor’ や ‘com.example.myproject.TransactionManager’ などの関連するクラスが含まれます。

### パッケージ化
パッケージ化は、Javaプログラムを整理し、管理しやすくするために、関連するクラスやインターフェースをまとめてパッケージに分けるプロセスです。

#### パッケージ宣言
各クラスファイルの先頭に、そのクラスが属するパッケージを宣言します。

```java
package com.example.myproject;

public class PaymentProcessor {
    // クラスの内容
}

```

#### インポート文の修正
他のクラスでこれらのクラスを使用する場合、インポート文を追加してパッケージを指定します。

```java
import com.example.myproject.PaymentProcessor;
import com.example.myproject.TransactionManager;

public class PaymentService {
    public static void main(String[] args) {
        PaymentProcessor processor = new PaymentProcessor();
        TransactionManager manager = new TransactionManager();
        // ここで processor や manager を使用する処理を記述する
    }
}
```

#### パッケージ化のメリット
1 コードの整理
2 名前の衝突を回避
3 アクセス制御
4 コードの再利用
5 チーム開発の効率化

#### パッケージの命名規則
1 パッケージ名は一意である必要があるため、通常は逆ドメイン名を使用します。
'com.example.myproject' のようにします。
2 パッケージ名はすべて小文字で書きます。
3 パッケージ名は関連する機能やモジュールに基づいてわかりやすい名前を付けます。


## インポート文
インポート文(import文)は、他のパッケージに定義されたクラスやインターフェースを自分のクラスで使用するために宣言するものです。Javaでは、クラスを利用する際にそのクラスのパッケージを指定する必要があります。インポート文を使用することで、パッケージ名を省略してクラスを使用することができます。

```java
import com.example.myproject.PaymentProcessor;
import com.example.myproject.TransactionManager;

public class PaymentService {
    public static void main(String[] args) {
        PaymentProcessor processor = new PaymentProcessor();
        TransactionManager manager = new TransactionManager();
        // ここで processor や manager を使用する処理を記述する
    }
}
```
この例では、'PaymentProcessor 'と'TransactionManager 'のパッケージをインポートしており、それぞれのクラスをインポート文を使用して指定しています。

#### importキーワード
Javaプログラムでほかのパッケージに定義されたクラスやインターフェースを使用するために使用されます。
これにより、完全修飾名(パッケージ名を含むクラス名)を使わずに、クラスを利用できるようになります。

1 単一クラスのインポート
特定のクラスをインポートする場合、次のように記述します
```java
import com.example.myproject.PaymentProcessor;

public class PaymentService {
    public static void main(String[] args) {
        PaymentProcessor processor = new PaymentProcessor();
        // PaymentProcessor クラスのインスタンスを使用する
    }
}
```

2 複数クラスのインポート
同じパッケージ内の複数のクラスをインポートする場合、ワイルドカード(＊)を使用してまとめてインポートできます。
```java
import com.example.myproject.*;

public class PaymentService {
    public static void main(String[] args) {
        PaymentProcessor processor = new PaymentProcessor();
        TransactionManager manager = new TransactionManager();
        // 複数のクラスを使用する
    }
}

```
ワイルドカードを使用すると、そのパッケージ内のすべてのクラスがインポートされますが、サブパッケージのクラスは含まれません。

3 静的インポート
静的メソッドや静的フィールドをインポートする場合、'import static'を使用します。
```java
import static java.lang.Math.PI;
import static java.lang.Math.sqrt;

public class MathExample {
    public static void main(String[] args) {
        double radius = 5.0;
        double area = PI * sqrt(radius);
        // 静的メソッドとフィールドを使用する
    }
}

```

前ページ
[[備忘録 その１] Java Silver ～Javaプログラミング基礎～](https://qiita.com/MagicShowTime/items/9fcf3a2cb4a7162aafcf "[備忘録 その１] Java Silver ～Javaプログラミング基礎～")

次のページ
[[備忘録 その３] Java Silver ～変数と配列 その１～](https://qiita.com/MagicShowTime/items/3d73ca92d28bc4236bd5 "[備忘録 その３] Java Silver ～変数と配列 その１～")