Java のメンバー内部クラスを使用する際の注意点
Javaのメンバー内部クラスを利用する際には以下の点に注意してください。
- メンバー内部クラスは、別のクラス内に定義されるクラスのため、その外部クラスのインスタンスが生成されたときにしか利用できません。外部クラスの静的メソッドからメンバー内部クラスに直接アクセスすることはできません。
- 内部クラスのメンバーは、外部クラスのプライベートメンバーも含めたすべてのメンバーにアクセスできます。
- メンバー内部クラスを使用する際には、まず外部クラスのインスタンスオブジェクトを作成し、そのオブジェクトから内部クラスのインスタンスオブジェクトを作成する必要があります。
- 内部クラスのメンバ変数やメソッドは、外部クラスのメンバ変数やメソッドと同名にすることができます。
- 外部クラスのメンバ変数やメソッドにアクセスする必要がない場合は、内部クラスを静的内部クラスとして定義し、そのクラス名から直接アクセスできます。
- メンバ内部クラスは外部クラスのprivateメンバを利用することができるので、アクセス制御機能を実現できます。
- ネイティブメンバクラスは継承可能で、親クラスのメソッドをオーバーライドできます。
- 内部クラスでは外部クラスの参照にアクセスでき、”外部クラス.this” で外部クラスの参照を取得できます。
- メンバー内部クラスと外部クラスの命名衝突問題に注意する。同名のクラスが発生しないように、名前空間を適切に使用する。
メンバー内部クラスを使用する際にはアクセス権や名前衝突、インスタンスの生成方法などに注意が必要で、状況に応じてメソッド内部クラスと静的内部クラスを使い分けます。