さて、続いて
onCreateメソッドで行っている処理を見てみましょう。このメソッドは、
Activityに用意されているもので、プログラムを起動したとき最初に呼び出されるものでしたね。ですから、これをオーバーライドして、いろんな処理を用意しておくのでした。
このメソッドをよく見ると、たいていは下のリストのような形で書かれているはずです。最初に、
super.onCreate(savedInstanceState);
こんなのがあるはずです。これは、実はとても重要な働きをするものです。
この「
super」というのは、「
スーパークラス」を意味する特別なキーワードです。
スーパークラスというのは、継承する元になっているクラスのことです。ここでいえば、
Activityクラスのことです。
これに対して、継承して新たに作ったクラスは「
サブクラス」といいます。つまり、Android開発では「
Activityクラスのサ
ブクラス」を作っている、というわけですね。
さて、先ほどオーバーライドを用意すると、「メソッドが呼び出されたら、オーバーライドしたものが呼び出されるようになり、元のクラス(
スーパークラス)にあったメソッドは呼び出されなくなる」と説明しました。
が、考えてみると、この
スーパークラスの
onCreateにも、何か処理があったんじゃないでしょうか。それって、実行しなくてもいいの? そう不安になってきませんか。
そこで、
スーパークラスにある
onCreateメソッドを最初に呼び出して、
スーパークラス側の処理を全部済ませてから、自分の処理を行うようにしているのです。それが、
super.onCreate……という部分だったのです。このように、
superは、
スーパークラスを示すものとして、そのままメソッドやフィールド名を続けて書いて呼び出すことができます。
これと似たようなものに「
this」というのもあります。こっちは、「自分自身」を示すものです。つまり、今実行しているこのクラスのインスタンスそのものを示すのに
thisが使われるわけですね。
この「
スーパークラスにある機能を呼び出す」ということは、Androidに限らず、よくあります。特にAndroidの開発では、APIに用意されているクラスを継承して大半のプログラムが作られますので、必要に応じて
スーパークラスに用意してある処理を実行してから自分の処理をやる、というやり方をすることがとても多いのです。
スーパークラスと
サブクラスの関係。これは、本格的にプログラムを作ろうとすると必ず意識しないといけなくなってきます。継承とセットでしっかり理解しておきましょう。
※[参考] 初心者のためのJava SEプログラミング入門http://libro.tuyano.com/index2?id=4001