PHASE2 LOG

主にIT関連・ゲームのログ

Javaのお勉強~finalとstatic~

      2016/03/12

 

この記事では修飾子のfinalとstaticについてお勉強です。

 

finalについて

 

finalはフィールドやクラス、メソッドにつけます。finalをつけた場合の変化は以下のようになります。

  • フィールド→値を変更できなくなる
  • クラス→継承できなくなる
  • メソッド→オーバーライドできなくなる

 

要するに外部からの改変を防いで、最終的なものですよっていうのを証明してくれるものですね。

 

また、finalをつけると変数から定数となります。

変数と定数の違いをわかりやすくするために、finalをつけたフィールド名は大文字にする

というのが慣習のようですね。

 

staticについて

 

staticという言葉には「静的な」という意味があります。

staticはフィールドやメソッドにつける修飾子です。

 

同じクラスから生成したオブジェクトで、staticのついたフィールドは共有化されます。

class Gil {
	static int money = 0;	//staticなフィールド
	
	void Print(int in, int out) {
		money = money + in - out;	//入金はプラス、支払いはマイナス
		if(money < 0) {
			System.out.println((-1 * money) + "ギル足りない");	//-1かけてマイナスをプラスに
		} else			
			System.out.println("残り:" + money + "ギル");
	}
}

public class Static {
	public static void main(String[] args){
		//どちらのオブジェクトも同じmoneyを使う
		Gil gil1 = new Gil();
		Gil gil2 = new Gil();
		
		gil1.Print(1100, 100); //1100 - 100 = 1000ギル
		gil2.Print(0, 1000);	//1000 - 1000 = 0ギル
		gil1.Print(0, 100);	//0 - 100 = -100ギル
	}

}

 

 

staticでフィールド共有しているイメージはこんな感じです。

static

 

実行結果はこうなります。

残り:1000ギル

残り:0ギル

100ギル足りない

 

gil1もgil2も同じGilクラスから生成されたものなので、staticなフィールドである「money」

を共有して処理を行っています。

 

finalとstaticに関しては以上です!

 

人気ブログランキング

 -