でも、
Activityを継承してクラスを作ったからといって、それで黙っていても画面に何かすごいものが出てきて動いてくれるか……といったら、もちろん、そうじゃありません。
アプリを実行する基本的な仕組みは
Activityに組み込まれていますが、例えば起動したら具体的にどうするのか(何かのレイアウトを作って表示するのか、どっかにアクセスして画面を表示するのか、何かのデータをロードするのか、……といった具体的にやること)は、わからないからです。こうした「このプログラムが具体的にやること」は、やっぱり自分で作らないといけません。が、それって具体的にどうやって作っていくんでしょうか。
少なくとも
Activityには、アプリに関する基本的な仕組みは入っているはずですね。なら、その仕組を利用して、何か便利な作り方がきっとあるはずです。
というわけで、下のリストにあげた基本形をよく見てください。これが、
Activityのクラスの基本的な形になります。クラスの中に、
public void onCreate(Bundle savedInstanceState)……
こんなものが書いてありますね。これは、「
メソッド」ですね。このメソッドに、起動するときに実行させたい処理を書いておくと、自動的にそれを実行してくれます。レイアウトを表示するとかいったことは、ここに処理を書けばいいのです。
なぜ、このメソッドに書いておくと、自動的に実行してくれるのか。それは、この
onCreateというメソッドが、
Activityクラスに既に用意されたものだからです。
Activityには、「もろもろの下準備が終わってアプリのインスタンスができあがったら、
onCreateっていうメソッドを呼び出す」という仕掛けが組み込まれているのです。
この
Acivityを継承したクラスを作って、そこに
onCreateというメソッドを用意しておくと、クラスのインスタンスを作ってアプリを実行するもろもろの処理を行った後に、
onCreateを呼び出します。すると、(ここが重要です!)
Activityにある
onCreateではなく、
Activityを継承して作ったこのクラスにある
onCreateを呼び出してくれるのです。
つまり、継承を使ってクラスを作り、継承する元のクラスにあったメソッドをそのまま新しいクラスに用意しておくと、そのメソッドが必要になったときは、こっちのあたしく作った方のメソッドが呼び出されるのですね。
Activityには、さまざまなメソッドが用意されていて、「こういうときにはこのメソッドを呼び出す」「こういうときはこっちを呼び出す」という仕組みが作られています。ですから、プログラムを作る側は、その仕組を理解して、「こういうときにこの処理を実行したいから、このメソッドをクラスに用意しておこう」という具合に処理を追加していけるのです。
この「元のクラスにあるメソッドを、継承した新しいクラスでそっくり用意する」ことを「
オーバーライド」といいます。
onCreateメソッドの手前に、「
@Override」ってあるでしょう? これは、「このメソッドは、
オーバーライドしたものだよ」ということを示すものだったんですね。
オーバーライドは、メソッドの名前が同じだけじゃいけません。用意する引数や、返値もすべてそっくりそのままでないといけません。「面倒くさいから引数なくていいや」とか考えると、
オーバーライドされず、必要なときになってもそのメソッドは呼び出されなくなってしまいます。必ず、「そっくりそのままメソッドを書く」必要があります。
Androidのプログラミングというのは、基本的に「Android APIに用意されているクラスを
継承して、必要に応じてそこにあるメソッドを
オーバーライドして処理を書いていく」ということなのです。ですから、継承とオーバーライドさえわかれば、プログラムの基本的な作り方はわかってきます。