質問: new mylog(){}; } ``` 1. 調べてみましたところこれは抽象クラスのmylogのインスタンスを 作成しているのではなく、自動でこれを継承したクラスが作成される との記述をどこかの掲示板で見たのですが、この認識で良いのでしょうか? 2. 抽象クラスのインスタンスを作成できるということに違和感を覚えます。 このようなことが出来ることによって、どのようなメリットがあるので しょうか。 どなたかお分かりになる方、教えていただけますようお願いします。
回答: > > 抽象クラスのmylogのインスタンスを作成しているのではなく、自動でこれを継承したクラスが作成される > > > そのとおりです。クラスファイルを見ると hoge$1.class みたいなものが生成されているハズです。 > > 抽象クラスのインスタンスを作成できる~ことによって、どのようなメリットがあるのでしょうか。 > > > ひとことで言えばファイルが少なくなって見通しが良くなります。 Android であれば View.OnClickListener のようなイベントハンドラを実装する際に、いちいち新しくクラスを作る必要がなくなります。 これはたとえば Activity にボタンを配置して、それが押された際の動作を記述する際に、 Activity 自身のクラスファイルにその処理を記述できれば、 別のファイルに記述するよりも自然に見えるケースが多い、といったメリットに繋がります。