問題
次のコードでインスタンス変数a, t, c, g の値を変更するメソッドはどれですか。
public class Main {
int a;
int t;
int c;
int g;
void setA(int a) {
a = a;
}
void setT() {
this.t = t;
}
int setC() {
return c;
}
int setG(int g) {
g = g;
return g;
}
void setAll(int x) {
a = t = this.c = g = setG(x);
}
}
選択肢
A)値を変更するメソッドはない
B)setT メソッド
C)setG メソッド
D)setC メソッド
E)setAll メソッド
F)setA メソッド
解答
A)値を変更するメソッドはない
B)setT メソッド
C)setG メソッド
D)setC メソッド
E)setAll メソッド
F)setA メソッド
解説
setA(int a)
void setA(int a) {
a = a;
}
- このメソッドは引数
a
を受け取りますが、インスタンス変数a
ではなく、ローカル変数に代入しているため、インスタンス変数a
の値は変更されません。
setT()
void setT() {
this.t = t;
}
this.t
に自身の値t
を代入しているだけで、値が変更されません。このメソッドも効果がありません。
setC()
int setC() {
return c;
}
- このメソッドは
c
の値を返すだけで、変更することはありません。
setG(int g)
int setG(int g) {
g = g;
return g;
}
- 引数
g
をローカルで受け取り、代入しているだけで、インスタンス変数g
の値は変更されません。
etAll(int x)
void setAll(int x) {
a = t = this.c = g = setG(x);
}
- このメソッドは
setG(x)
の戻り値を使って、a
,t
,c
,g
の値を変更します。setG(x)
がx
を返すため、a
,t
,c
,g
すべてがx
に設定されます。
インスタンス変数の値を変更するメソッドは E)setAll メソッド のみです。
対象資格:Java SE17 認定資格