Androidで出てくるJavaの機能 (2/5)
作成:2011-01-07 08:48
更新:2011-01-07 08:48
更新:2011-01-07 08:48
■オーバーライド
でも、Activityを継承してクラスを作ったからといって、それで黙っていても画面に何かすごいものが出てきて動いてくれるか……といったら、もちろん、そうじゃありません。
アプリを実行する基本的な仕組みはActivityに組み込まれていますが、例えば起動したら具体的にどうするのか(何かのレイアウトを作って表示するのか、どっかにアクセスして画面を表示するのか、何かのデータをロードするのか、……といった具体的にやること)は、わからないからです。こうした「このプログラムが具体的にやること」は、やっぱり自分で作らないといけません。が、それって具体的にどうやって作っていくんでしょうか。
少なくともActivityには、アプリに関する基本的な仕組みは入っているはずですね。なら、その仕組を利用して、何か便利な作り方がきっとあるはずです。
というわけで、下のリストにあげた基本形をよく見てください。これが、Activityのクラスの基本的な形になります。クラスの中に、
なぜ、このメソッドに書いておくと、自動的に実行してくれるのか。それは、このonCreateというメソッドが、Activityクラスに既に用意されたものだからです。Activityには、「もろもろの下準備が終わってアプリのインスタンスができあがったら、onCreateっていうメソッドを呼び出す」という仕掛けが組み込まれているのです。
このAcivityを継承したクラスを作って、そこにonCreateというメソッドを用意しておくと、クラスのインスタンスを作ってアプリを実行するもろもろの処理を行った後に、onCreateを呼び出します。すると、(ここが重要です!)ActivityにあるonCreateではなく、Activityを継承して作ったこのクラスにあるonCreateを呼び出してくれるのです。
つまり、継承を使ってクラスを作り、継承する元のクラスにあったメソッドをそのまま新しいクラスに用意しておくと、そのメソッドが必要になったときは、こっちのあたしく作った方のメソッドが呼び出されるのですね。
Activityには、さまざまなメソッドが用意されていて、「こういうときにはこのメソッドを呼び出す」「こういうときはこっちを呼び出す」という仕組みが作られています。ですから、プログラムを作る側は、その仕組を理解して、「こういうときにこの処理を実行したいから、このメソッドをクラスに用意しておこう」という具合に処理を追加していけるのです。
この「元のクラスにあるメソッドを、継承した新しいクラスでそっくり用意する」ことを「オーバーライド」といいます。onCreateメソッドの手前に、「@Override」ってあるでしょう? これは、「このメソッドは、オーバーライドしたものだよ」ということを示すものだったんですね。
オーバーライドは、メソッドの名前が同じだけじゃいけません。用意する引数や、返値もすべてそっくりそのままでないといけません。「面倒くさいから引数なくていいや」とか考えると、オーバーライドされず、必要なときになってもそのメソッドは呼び出されなくなってしまいます。必ず、「そっくりそのままメソッドを書く」必要があります。
Androidのプログラミングというのは、基本的に「Android APIに用意されているクラスを継承して、必要に応じてそこにあるメソッドをオーバーライドして処理を書いていく」ということなのです。ですから、継承とオーバーライドさえわかれば、プログラムの基本的な作り方はわかってきます。
アプリを実行する基本的な仕組みは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に用意されているクラスを継承して、必要に応じてそこにあるメソッドをオーバーライドして処理を書いていく」ということなのです。ですから、継承とオーバーライドさえわかれば、プログラムの基本的な作り方はわかってきます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※Activity継承クラスの基本 public class クラス名 extends Activity { @Override public void onCreate(Bundle savedInstanceState) { ……ここに最初に実行することを書く…… } }
※関連コンテンツ