カテゴリー:
Java
閲覧数:377 配信日:2013-04-30 09:59
前提
・class B … 「ネストクラス」「内部クラス」
public class A {
public class B {
}
}
インスタンス生成
1.外部クラスのインスタンス生成
A a = new A();
2.そのインスタンス参照(生成したインスタンスオブジェクト)経由で、内部クラスのインスタンスを生成
B b = a.new B();
→外部クラスのインスタンスと結びついた内部クラスのインスタンスが生成される
this
・生成箇所が、外部クラスのインスタンスメソッド内であれば、外部クラスのインスタンスとしてthisを利用可能
public class A {
public class B {
}
public void hoge() {
B b = this.new B();
}
}
thisは省略可能
・thisは省略可能なので以下のようなコードで書かれることが多い
public class A {
public class B {
}
public void hoge() {
B b = new B();
}
}
staticメソッドでは、this利用不可
・staticメソッド内で内部クラスをインスタンス化する際は、外部クラスのインスタンス生成してからnew
public class A {
public class B {}
public static void main(String[] args) {
A a = new A();
B b = a.new B();
}
}
内部クラスは、外部クラスのインスタンス1つにつき複数生成可能
A a = new A();
B b1 = a.new B();
B b2 = a.new B();
B b3 = a.new B();