0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java Silver確実合格を目指すカレンダーAdvent Calendar 2024

Day 1

【Java】パッケージのアクセス制御

Last updated at Posted at 2024-11-30

初めに

Javaではアクセス修飾子やモジュールを用いたアクセス制御が存在する。その中でも今回はパッケージによるアクセス制御に着目してみた。

パッケージとは?

パッケージはクラスやインタフェースを管理するために使うもので、以下の機能を提供する。

  • 名前空間を提供
  • アクセス修飾子と組み合わせてアクセス制御機能を提供
  • クラスの分類を可能にする

以下のようにしてパッケージは設定できる。この時package→import→classの順番に記述する。

Java
package beta;
import alpha.Base;
public class Main{
	public static void main(String[] args) {
		//source
	}
}

無名パッケージから無名パッケージへのアクセス

パッケージ名を明示的に設定していない場合は無名パッケージ(デフォルトパッケージ)の扱いとなる。この時、無名パッケージから無名パッケージのアクセスは設定等必要ない。

Java(Main.java)
public class Main {
	public static void main(String[] args) {
		Hensu.hensu();
	}
}
Java(Hensu.java)
public class Hensu {
	public static void hensu(){
		int hensu = 1;
		System.out.println(hensu);
	}
}

結果

1

無名パッケージ・名前ありパッケージから名前ありパッケージへのアクセス

以下のようにimport文を使用してアクセス可能。

Java(Main.java)
import alpha.Base;
public class Main {
	public static void main(String[] args) {
		Base base = new Base(1);
		System.out.println(base.getValue());
	}
}
Java(Base.java)
package alpha;
public class Base {
	private int value;
	public Base(int value) {
		this.value = value;
	}
	public int getValue() {
		return value;
	}
}

結果

1

名前ありパッケージから無名パッケージへのアクセス

これは不可能。無名パッケージは同じく無名パッケージからしかアクセスできない。以下のようにメソッドを指定すると、エラーになる。

Java(Hensu.java)
public class Hensu {
	public static void hensu(){
		int hensu = 2;
		System.out.println(hensu);
	}
}
Java(Base.java)
package alpha;

public class Base {
	public 	static void main(String[] args) {
    		Hensu.hensu();//無名パッケージのクラスを呼び出し
	}
}

結果

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Hensu を解決できません

	at alpha.Base.main(Base.java:5)

まとめ

  • パッケージの役割は名前空間の提供・アクセス修飾子と組み合わせてアクセス制御機能を提供・クラスの分類
  • 無名パッケージから無名パッケージへのアクセスに設定は必要ない
  • 無名パッケージ・名前ありパッケージから名前ありパッケージへアクセスする場合はimport文を使う
  • 名前ありパッケージから無名パッケージへのアクセスは不可
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?