LoginSignup
3
2

More than 1 year has passed since last update.

エンクロージングインスタンスについて調べてみた。

Last updated at Posted at 2018-09-05

https://qiita.com/hp_kj/items/dd533d98f9d065bd0301
thisについて調べたところ、エンクロージングインスタンスという言葉が出てきたので調べてみた。

JavaA2Zによると
内部クラスにとっての「外部クラスのインスタンス」。
 
内部クラスのインスタンスは、「外部クラスのインスタンスの中に含まれる」という特殊なインスタンスとなる。そのため、内部クラスのインスタンスを作るためには、必ず外部クラスのインスタンスが必要となる。
その「外部クラスのインスタンス」が「エンクロージングインスタンス」である。内部クラスのインスタンスを「enclosing」つまり「囲い込む」インスタンスである。

「外部クラスのインスタンス」が「エンクロージングインスタンス」

まずこれが結論のようです。そして
意味としては

内部クラスのインスタンスを「enclosing」つまり「囲い込む」インスタンスである。

ということです。前回のコードに当てはめると、

public class Main {
    public static void main(String []args) {
        Outer o =  new Outer();///1-1
        Outer.Inner oi = o.new Inner();///2-1
        oi.innerPrint();
    }

    public static class Outer{///1

        int outerhp = 10;

        public class Inner{///2

            public void innerPrint() {
                System.out.println(Outer.this.outerhp);
            }

        }

    }

}

1-1で外部クラス1(Outer)のインスタンスを作っています。
そして2-1で外部クラスのインスタンスの中に含まれる内部クラス2(Inner)のインスタンスを作成しています。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2