Mono Works

チラシのすきま

メモ:アノテーションの@Overrideについて

@Overrideって何だろ?から始まって、@Overrideが「Javaで用意されているアノテーション」ということが分かったのですが、今度は「アノテーション」って何?となり、いつものように脇道に逸れつつ調べものをしたのでメモっておきます。

androiddevmemo20150901_01

自分なりに解釈すると、@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のアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内