| English | 意味 |
|---|---|
| accessor/əkˈsesə/ | アクセサ |
| mutator/mjuːˈteɪtə/ | ミューテータ |
A rejected update leaves the previous state intact
- A score starts at 20. setScore(s) assigns only when s >= 0; the call setScore(-5) leaves score at 20.
- The guard prevents an invalid update. A later getScore() returns the existing state rather than the rejected argument.
Writing a method
- A method has a header and a body. Header:
public void addScore(int s)— access, return type, name, parameters. - Body: the statements in
{ }that do the work. The method can read and change the object's instance variables.
Return values
- A method's return type says what it hands back; use
return value;to send it.public int getScore() { return score; }returns the current score. - A
voidmethod returns nothing — it just does its job (e.g. printing). The returned value must be assignment-compatible with the declared return type; for example, anintvalue can be widened and returned by adoublemethod.
メソッドpublic double result() { return 3; }は、3がintリテラルであるにもかかわらずコンパイルできます。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
Javaはint結果をdoubleに拡張します;返り値は互換性がある必要があり、必ずしも同一のタイプで書かれている必要はありません。
Accessors and mutators
- An accessor (getter) 访问方法 returns information without changing the object:
getScore(). A mutator (setter) 修改方法 changes the object's state:addScore(s)orsetName(n). - Getters are usually
int/String-returning; setters are usuallyvoid. Together they form the object's public interface over its private data.
アクセサは値を返します
スコアが20から始まり、setScore(-5)による更新を拒否するため、getScoreは20を返します。
オブジェクトを変更せずに情報を返すメソッドは...です
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
アクセサは読み取って返します;ミューテータは状態を変化させます。
void メソッド...
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
void = 返り値なし;単にアクションを実行するだけ。
A non-void method may reach its closing brace and complete normally without returning a value.
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
A path completing normally must return a compatible value. A path that throws an exception is a different case.
どのメソッドが状態を変える前に入力を検証できますか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
セッターは代入前に確認できます(例:負の値を拒否)。
voidメソッド内で返り値を書くのはコンパイルエラーではありません。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
voidメソッドは値を返せません — コンパイルできません。
Methods can validate
- Because outside code goes through methods, a method can check before it acts.
public void setScore(int s) { if (s >= 0) score = s; }rejects a negative score. - Private access prevents unrelated code from directly assigning the field. Constructors and every class method that writes it must still preserve the intended rule; the guarded setter cannot repair an invalid initial score by itself.
A non-void method must return a compatible value on every path that completes normally. A path may instead throw an exception. If an int method reaches its end without returning, compilation fails. A void method returns nothing, so return; (or no return) is correct there; writing return value; in a void method won't compile.
For the stated guarded setter, what does getScore() return after setScore(-5)?
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
The condition fails, so no assignment occurs and the old score remains 20.
スコアが20から始まり、replaceScore(30)は古いスコアを保存し、30を割り当てた後に古いスコアを返します。この呼び出しはどのような値を返しますか?
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
返される古いスコアは20です;新しい格納されたスコアは30です。値を返すことは変数を妨げません。
An accessor and a mutator:
- Accessor:
public int getScore() { return score; }— reads, returnsint. - Mutator:
public void addScore(int s) { score += s; }— changes state, returns nothing. student.addScore(10); int now = student.getScore();
Carry the reasoning to a new case
- Consider
public int replaceScore(int s) { int old = score; score = s; return old; }. It is a mutator even though it returns a value: starting at 20, replaceScore(30) returns 20 and leaves the score at 30. - Judge behavior rather than names or return types. A method called getScore that increments the score is not a pure accessor, and a void method that merely prints a message need not mutate the object.
A method has a header (access, return type, name, parameters) and a body. A non-void method must return an assignment-compatible value on every normally completing path; a void method returns nothing. Accessors (getters) return state without changing it; mutators (setters) change state and can validate the new value.