@Overrideって何だろ?から始まって、@Overrideが「Javaで用意されているアノテーション」ということが分かったのですが、今度は「アノテーション」って何?となり、いつものように脇道に逸れつつ調べものをしたのでメモっておきます。
自分なりに解釈すると、@Override はアノテーションと呼ばれるJavaの標準機能のひとつで、あるメソッドに@Overrideを付記することで「スーパークラスで定義されたメソッドを@Overrideを付記したメソッドでオーバーライド(サブクラスで再定義して、動作を上書き)していること」を宣言しています。
具体的な記述を見てみましょう。
Android Studioで新規プロジェクトでBlank Activityを選択して作成すると、MainActivity.javaとactivity_main.xmlが作成され、MainActivity.javaには自動的に下記の内容が記載されてます。そもそもの疑問の発端がここなのです。
package com.example.sample.test;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
-中略-
}
Androidの基本サイクルでは、アクティビティが開始されると、「onCreate()」、「onStart()」、「onResume()」という基本メソッドが順に呼ばれて「実行」状態になります。上記記述では、基本メソッドのひとつ「onCreate()」に「@Override」をくっ付けて、onCreate()メソッドが呼ばれた時に「setContentView(R.layout.activity_main);」を実行するという記述になっています。
@Overrideの部分だけ抜き出すと、こういう形式。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* 実行したい処理をここに記述 */
}
次回は、「setContentView(R.layout.activity_main);」という処理がどういった処理なのかについて、メモリたいと思います。
コメント
コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)