未経験からのエンジニア転職を目指していたのですが、先日無事内定をいただきました!
転職先で使用する言語がJavaということで、アウトプット学習のため少しずつ投稿していきたいと思います。(Java Silverの学習も兼ねています!)
パッケージ(package)とは
Javaはオブジェクト指向の言語であるため、クラスをたくさん作成する可能性があります。
そのクラスを機能ごとに、分類するための仕組みがパッケージです。
パッケージの目的
①名前空間(ネームスペース)を提供することで、名前の衝突を回避する
②アクセス制御機能を提供する
③クラスの分類を可能にする
パッケージの宣言方法
package practice;
//package + 好きなパッケージ名;
また、パッケージは階層を作成できる為(ディレクトリのようなイメージ)、その場合は上の階層から「.」で繋げて記述します。
package practiceA.practiceB.practiceC;
ちなみに...
・パッケージ宣言をしない場合は、無名パッケージに属するものと判断されます。そのため、パッケージに属さないクラスは存在しません。
・「package」の他に「import」も宣言することがあると思いますが、importよりもpackageを先に記述しなければコンパイルエラーが発生します。(packageよりも先に記述できるのはコメントのみである。)
パッケージ所属のクラスを呼び出す
①同じパッケージに属するクラスを呼び出す場合は、クラス名のみで構いませんが、
別のパッケージに属するクラスを呼び出す際には「完全修飾名」(パッケージ名.クラス名)を用いて呼び出す必要があります。
//java.testパッケージに属するTestクラスを呼び出したい場合
package java.practice;
class Practice{
public static void main(String[] args){
java.test.Test test = new java.test.Test();
//Testクラスをインスタンス化(この記述の際にも完全修飾名を使用する)
}
}
②上記の方法では、毎回の記述が面倒...な為、import宣言を使用する方法もあります!
package java.practice;
import java.test.Test;
class Practice{
public static void main(String[] args){
Test test = new Test();
//クラス名だけで別のパッケージに所属するクラスをインスタンス化できる。
}
}
アクセス修飾子によるアクセス制御
package java.test;
public class Test{
//publicが付いている為、外部のパッケージに属するクラスからアクセスができる
}
package java.test;
class Test{
//publicが付いていない為、外部のパッケージに属するクラスからアクセスができない
}
まとめ
なんとなく使用していたpackageに、こんなにもルールやメリットがあるとは知りませんでした!もしも間違い等お気づきの点がございましたらコメントお願いいたします!!閲覧いただき有難うございました(^^)