ホーム > Java > 第7章-2 非staticなインナークラス

Java -非staticなインナークラス-

クラス内に定義したstatic修飾子の付かないクラスを非staticなインナークラスといいます。

非staticなインナークラスは、外部クラス(インナークラスを含む外側のクラス)をインスタンス化し、さらに インナークラスをインスタンス化しないと利用できません。

非staticなインナークラス

非staticなインナークラスは、外部クラスのメンバの1つとして定義されているインナークラスで、static指定のないもののことです。

非staticなインナークラスは、そのインナークラスを含むクラスをインスタンス化しない限り利用することはできません。

書式1
インナークラス名 変数名 = new インナークラス名(引数);
変数名.メソッド名;
書式2
new インナークラス名().メソッド名(引数);

他のメンバへのアクセス

クラスのメンバが自由にアクセスが可能なように、メンバの一員であるインナークラスも外部のクラスの他のメンバに自由にアクセスすることが できます。

インナークラス内での修飾子

インナークラスとクラスのメンバとして指定したとき、メンバ変数と同様にpublic,protected,ptivate,abstractなどの 修飾子を付けることができます。

ただし、インナークラスのメンバにstatic修飾子を付けることはできません。

thisの利用

thisは、自分のインスタンスを指すキーワードです。
インナークラス内でthisを使用した場合は、インナークラスのインスタンス自身や、インナークラス内のインスタンス内のメンバを 指します。

外部クラスのインスタンスやインスタンス内のメンバを指す場合は、「外部クラス.this」と指定します。

他のクラスからのインナークラスの利用

非staticなインナークラスは他のメンバと同様、インスタンス化して初めて利用できます。

書式1
外部クラス名  変数名1  =  new   外部クラス名();
外部クラス名.インナークラス名  変数名2  =  変数名1.new  インナークラスのクラス名();
変数名2.インナークラス内のメソッド名();
書式2
外部クラス名.インナークラス名  変数名1  =  new 外部クラス名().new  インナークラス名();
変数名1.インナークラスのメソッド名();
書式3
new  外部クラス名().new  インナークラス名().インナークラスのメソッド名();