staticメソッド:問題1
問題:以下のクラスAのコンパイル結果はどれか?
A. static int j = 0;でコンパイルエラー
B. i++;でコンパイルエラー
C. j++;でコンパイルエラー
D. コンパイルエラーは発生しない
class A {
int i;
static int j = 0;
static void x() {
i++;
j++;
}
}
解答:
B. i++;でコンパイルエラー
解説:
クラスメソッド内ではインスタンス変数にアクセスできません。
A. static int j = 0;でコンパイルエラー
B. i++;でコンパイルエラー
C. j++;でコンパイルエラー
D. コンパイルエラーは発生しない
class A {
int i;
static int j = 0;
static void x() {
i++;
j++;
}
}
解答:
B. i++;でコンパイルエラー
解説:
クラスメソッド内ではインスタンス変数にアクセスできません。
メソッドの種類
キーワードstaticを付けないで定義したメソッドをインスタンスメソッドといいます。
キーワードstaticを付けて定義したメソッドをクラスメソッドといいます。
問題:以下のクラス定義において、正しい説明はどれか。
A. xはクラスメソッド、yはインスタンスメソッド
B. xはインスタンスメソッド、yはクラスメソッド
C. xもyもクラスメソッド
D. xもyもインスタンスメソッド
class A {
static void x(){
}
void y(){
}
}
解答:
A. xはクラスメソッド、yはインスタンスメソッド
キーワードstaticを付けて定義したメソッドをクラスメソッドといいます。
問題:以下のクラス定義において、正しい説明はどれか。
A. xはクラスメソッド、yはインスタンスメソッド
B. xはインスタンスメソッド、yはクラスメソッド
C. xもyもクラスメソッド
D. xもyもインスタンスメソッド
class A {
static void x(){
}
void y(){
}
}
解答:
A. xはクラスメソッド、yはインスタンスメソッド