ねっとぱんだ-プログラミング勉強ブログ-

Webデザイン、プログラミングの勉強ブログ。

【java】パッケージ

パッケージ

  • クラスをまとめたり名前の衝突を避けられる。
  • パッケージ名は他と被らないように組織のドメインを逆にしたものを使うことが推奨されている。
    https://mechalog.com/java-package
  • パッケージ化していき、mainメソッドがあるクラスとその他のクラスをフォルダ分けして整理していく。
  • mainメソッドは必ずpublicに

アクセス修飾詞

public
別クラスから呼び出せる
private
同じクラスから読み出せる
protected
同じパッケージ、同じサブクラスから呼び出せる
  • アクセス修飾詞をつけない場合privateとして扱われる。

jp.suzuki.practiceというパッケージを作る

practice.java
mainメソッドのあるクラス
(ファイル名と同じに)
package jp.suzuki.practice;
//Humanクラスを呼び出す
import jp.suzuki.practice.model.Human;
//AdminHumanクラスを呼び出す
import jp.suzuki.practice.model.AdminHuman;

public class practice{
    public static void main (String[] args){
    	//Humanクラスをインスタンス化してメソッドにアクセス
    	Human tom = new Human("tom");
    	tom.sayHi();
    	//AdminHumanクラスをインスタンス化してメソッドにアクセス
	    AdminHuman bob = new AdminHuman("bob");
	    bob.sayHello();
	    bob.sayHi();
	    //nameはprotectedなので他クラスからアクセスできない(エラーになる)
	    System.out.println(tom.name);
    }
}

jp.suzuki.practice.model
その他のファイルをここに入れる
Human.java

package jp.suzuki.practice.model;

public class Human {
	//protectedなので他クラスからアクセスできない
	protected String name;
	//コンストラクタ
	//publicなので他クラスからアクセスできる
	public Human(String name){
		this.name = name;
	}
	//publicなので他クラスからアクセスできる
	public void sayHi(){
		System.out.println("Hi,"+name);
	}
}

AdminHuman.java

package jp.suzuki.practice.model;

public class AdminHuman extends Human{
	//publicなので他クラスからアクセスできる
	public AdminHuman(String name){
		//親クラスのコンストラクタを呼ぶ
		super(name);
	}
	//メソッドのオーバーライド
	@Override
	//publicなので他クラスからアクセスできる
	public void sayHi(){
		System.out.println("[Admin]Hi,"+name);
	}
	//新しいメソッドの追加
	//publicなので他クラスからアクセスできる
	public void sayHello(){
		System.out.println("Hello,"+name);
	}
}

コンパイル

mainメソッドのあるクラスをコンパイルするとそれ以降のクラスもコンパイルされる。

javac jp/suzuki/practice