前回、擬似的にActivityクラスを定義してみました。その後、mainメソッド内でオブジェクトを生成しましたが、Activiryクラスの中身が空でした。そこで今回はActivityクラスの中にメソッドやフィールドを定義していきます。
##メソッドの定義と利用
クラスの中にはメソッドを記述することができます。次のようにonCreate()メソッドを追加してみましょう。
public class Activity {
void onCreate() {
System. out.println( "これはonCreateメソッドです" );
}
}
このように定義したメソッドは外部から呼び出すことができます。mainメソッドに次のように記述してみましょう。
static public void main(String [] args) {
Activity actA = new Activity();
actA.onCreate();
}
実行すると、次のように表示されます。
これはonCreateメソッドです
次に、onCreateメソッドを次のように書き換えてみましょう。
void onCreate() {
System. out.println( this);
}
そして、mainメソッドを次のように書き換え実行すると、
static public void main(String [] args) {
Activity actA = new Activity();
Activity actB = new Activity();
actA.onCreate();
actB.onCreate();
}
Activity@4c76ec2d
Activity@138ba593
と出力されます。thisというキーワードは、今の場合、actAやactBというオブジェクト変数が結びついているActivityのオブジェクトそのものを示しています。
クラス内にはメソッドを複数記述することができます。AndroidのActivityのライフサイクルに習って、複数のメソッドを定義してみましょう。
public class Activity {
void onCreate() {
System. out.println( "onCreateです");
}
void onStart() {
System. out.println( "onStartです");
}
void onResume() {
System. out.println( "onResumeです");
}
void onPause() {
System. out.println( "onPauseです");
}
void onStop() {
System. out.println( "onStopです");
}
void onDestroy() {
System. out.println( "onDestroyです");
}
}
そしてmainメソッドを次のように書き換えましょう。
static public void main(String [] args) {
Activity actA = new Activity();
actA.onCreate();
actA.onStart();
actA.onResume();
actA.onPause();
actA.onStop();
actA.onDestroy();
}
実行すると、次のように表示されます。
onCreateです
onStartです
onResumeです
onPauseです
onStopです
onDestroyです
実際のAndroidアプリケーションでの正確な動作はもっと複雑ですが、Androidがアプリケーションを起動し、終了するまではこれらのメソッドが呼び出され、Activityのライフサイクルを実現することができました。
##フィールドの定義と利用
クラス内部には変数を定義することができます。クラスの内部の定義した変数をフィールドと呼びます。次のようにフィールドをActivityに定義してみましょう。
public class Activity {
String message = "こんにちは";
//~略~
フィールドとして定義した変数は、各メソッド内で利用することができます。onCreate()などのメソッド内に次のように記述して利用することができます。
void onCreate() {
System. out.println( "onCreateです");
System. out.println( message);
}
次のように、mainメソッドから呼び出すと
static public void main(String [] args) {
Activity actA = new Activity();
actA.onCreate();
}
onCreateです
こんにちは
と表示されます。
###ローカル変数
一方、メソッド内に定義した変数はローカル変数と呼ばれます。onCreate()メソッドを次のように記述するとmessageはローカル変数となります。
void onCreate() {
String message = "こんばんは" ;
System. out.println( "onCreateです");
System. out.println(message);
}
フィールドとローカル変数の名前が同じ場合は、そのメソッド内ではローカル変数が優先されます。またローカル変数は他のメソッドから利用することはできません。
###フィールドへの直接アクセス
mainメソッドなど外部のクラス内のメソッドからフィールドにアクセすることもできます。onCreate()メソッドを次の形に戻し、
public class Activity {
String message = "こんにちは";
void onCreate() {
System. out.println( "onCreateです");
System.out.println(message);
}
//~略~
mainメソッドを次のようにすると、
static public void main(String [] args) {
Activity actA = new Activity();
actA. message = "おはようございます" ;
actA.onCreate();
}
onCreateです
おはようございます
と表示されます。フィールドやローカル変数を利用する場合は変数がどこからどこまで有効かという変数のスコープを意識する必要があります。