忍者ブログ
よくわからないことを調べて解説してみるブログ。

2024

0426
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2015

0623
package june20150623;

public class InnerStaticClass {
	static class InnerClass{
		public int no = 10;
		public static int value = 11;
	}
	class InnerClass2{
		public int no = 12;
//		public static int value = 13;	//	コンパイルエラー!staticでないインナークラスにstatic変数はfinal修飾子が必須。
										//	トップクラスおよび静的インナークラスのみ、staticの非final変数定義が許可されている。
										//	実行時のエラーメッセージ和訳
										//	「定数式で初期化されない限り、フィールドの値は、
										//	非静的インナータイプで静的に宣言することはできません」
		public static final int value2 = 14;
	}
	public static void main(String[] args) {
//		int no = new InnerStaticClass().InnerClass.no;	// コンパイルエラー!メンバ変数はstaticではない。

		//	instance-value of static inner class
		int no = new InnerStaticClass.InnerClass().no;	// メンバ変数はインスタンス変数であるため、インスタンス化したうえでのアクセスが可能。
														// インナークラスへのアクセスはstaticに可能。

		// static-value of static inner class
		no = InnerStaticClass.InnerClass.value;			// static インナークラスのstaticメンバ定義

//		no = new InnerStaticClass.InnerClass2().no;		// 最上位クラスのインスタンス化が前提と成るため、コンパイルエラー!

		// instance-value of non-static inner class
		no = new InnerStaticClass().new InnerClass2().no;

		// static-value of non-static inner class

		no = InnerStaticClass.InnerClass2.value2;		// non-static インナークラスへのstaticメンバ定義(final必須)
	}
}


・インナークラスの生成式
 new 最上位クラス(). new インナークラス();

・非staticインナークラスのメンバへのアクセス
 new 最上位クラス.new インナークラス().メンバ変数;

・非staticインナークラスのstaticメンバへのアクセス
 最上位クラス.インナークラス.staticメンバ変数;

・staticインナークラスのメンバへのアクセス
    最上位クラス.new インナークラス.メンバ変数;
  
  メンバ変数がstaticでないため、インナークラスをインスタンス化することでしか、メンバ変数を実体化出来ないため、本来不要であるstaticクラスのインスタンス化が必要となっている。

・staticインナークラスのstaticメンバへのアクセス
 new 最上位クラス.インナークラス().staticメンバ変数;

・トップクラスおよび静的インナークラスのみ、staticの非final変数定義が許可されている。

拍手[0回]

PR
Post your Comment
Name:
Title:
Font:
Mail:
URL:
Comment:
Pass: Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:
たんてーくん
性別:
非公開
フリーエリア
最新CM
[09/25 http://2017.bblbuy.com]
[09/24 http://www.japanform.com]
[09/23 http://www.japanform.com]
[09/22 http://www.japanform.com]
[09/21 http://2017.bblbuy.com]
ブログ内検索
忍者ブログ [PR]
* Template by TMP