http://qiita.com/koukisayou/items/3ba742548cb0f4c84eaa

こちらのサイトを手本にゲーム作りの基礎みたいなことを学ぼうとした際に、頭に残ったThreadとRunnable。

予想通り、深い関係どころか切っても切れない関係でありんした。

他のサイトなどでTreadをどう使うか、調べてみると、

「Threadクラスを継承したサブクラスを作れ」的な解説に当たります。

で、Threadクラス自体がRunnableインターフェースをimplementsしているので、当然runメソッドを持っていると。

で、このサイトの手本をみると、Threadクラスをextendしてなくて、Runnableをimplementsしており、内部で

Threadクラスのインスタンスを作り、start()メソッドを実行しております。

これは、サブクラスがJPanelをextendsしているので、Javaのお約束、二つのクラスをextends出来ないが故にこういう作りにしたのでしょうね。

で、内部でThreadクラスのインスタンスを作ってstart()メソッドをキックしても、動かすrunメソッドがない。

そんで、Runnableをimplementsしてある、ってことなのでしょう。

おそらく、どっちでもいいのかな、という気がしました。

Threadクラスを継承して、内部でJPanel作っても、いいような気もしなくもない。

paintComponent()を考えてJPanelを継承する方を選んだのですかね。

サブクラスのクラスフィールドとしてJPanel作っておき、

コンストラクタの中でpaintComponentして、runメソッドのループの中でrepaint()する、ということで、同じように動かないですかね。

でもJPanelを継承したこのサブクラスはとても合理的に思えます。

これを手本にして何か作ってみたいです。

いや、とっても参考になりましたです。はい。#サブクラス#継承#メソッド