2

アクセサー メソッドを理解できず、setAge、getAge、および getName の作成に行き詰まっています。

これは質問です:

との 3 つのアクセサ メソッドを追加setAgegetAgeますgetName。これらのメソッドは、対応するインスタンス変数の値を設定および取得する必要があります。

public class Player {

    protected int age;
    protected String name;

    public Player(String namArg) {
        namArg = name;
        age = 15;
    }
}
4

5 に答える 5

4

アクセサー メソッドは、プライベート フィールドまたは保護されたフィールドの値を返すために使用されます。これは、メソッド名の先頭に「get」という接頭辞を付けた命名スキームに従います。たとえば、name のアクセサ メソッドを追加してみましょう。

class Player{
   protected name

//Accessor for name
   public String getName()
   {
     return this.name;
   }
}

次のようなオブジェクトを介して保護された名前の値にアクセスできます。

Player ball = new Player()
System.out.println(ball.getName())

ミューテーター メソッドは、プライベート フィールドの値を設定するために使用されます。これは、メソッド名の先頭に「set」という単語をプレフィックスとして付けた命名スキームに従います。たとえば、名前のミューテーター フィールドを追加してみましょう。

//Mutator for name
   public void setName(String name)
   {
     this.name= name;
   }

これで、ball.setName('David'); を使用してプレーヤーの名前を設定できます。

于 2013-10-17T20:02:13.053 に答える
1

インスタンス変数は age と name です。セッター メソッドは無効であり、渡された引数を対応する変数に設定します。ゲッターは無効ではなく、適切な変数を返します。

これを試して、質問に戻ってください。

于 2013-10-17T19:52:36.923 に答える
0

回答: アクセサ メソッドがわかりません。問題は次のとおりです。

なぜアクセサメソッドが必要なのですか? カプセル化!!! なぜカプセル化が必要なのですか?

1) あなた (プログラマ#1) が setAge、getAge、および getName メソッドを作成するとします。私はプログラマー#2です。おそらく、年齢と名前に直接アクセスすることはできません。だから私はあなたのパブリック アクセサ メソッド setAge、getAge、および getName を使用する必要があります。これは、コードと変数を混乱から救うためです。すべてのコーダーを信用できないからです。

2) setAge メソッドでは、VALIDATION を提供できます

ランダムな邪悪なプログラマー: 年齢を 234 にしたいので、あなたのプログラムの結果はハハハを粉砕します

u: いや、検証条件を setAge メソッドに追加して、年齢を 0 から 90 まで (好きなように) だけにできるようにします。

これが、アクセサー メソッドを使用する最も一般的な理由です。

コードの説明:

setAge の説明 (これは主なアイデアを得るためのものです)

public void setAge(int ageInput) { 
if ((ageInput > 10) && (ageInput <90))
 {age = a;}}

ランダムな邪悪なプログラマーが ageInput をパブリック メソッドに送信します。まず、age の値が正しいかどうかをチェックします。はいの場合、age インスタンス (オブジェクト) 変数は ageInput になります。いいえの場合、何も起こらず、変数がめちゃくちゃになることはありません。

GetAge: 現在の年齢の値を返すだけです。派手なものはありません。

さらに質問があればお知らせください ;) 幸運を祈ります。

于 2013-10-17T19:56:34.727 に答える
0

setAbcd メソッドは、保護されたデータ フィールドを設定するために使用するミューテーター メソッドです。getAbcd メソッドは、データ フィールドの値を返すために使用するアクセサ メソッドです。これらは通常プライベートであり、クラス外では使用できないためです。

例えば

public void getvariableName() {
    return variableName;
   }
于 2013-10-17T19:51:05.803 に答える
0
public class Player {

protected int age;
protected String name;

// ミューテーター メソッド
public void setAge(String a) { age = a; }

public void setName(String n) {
    name = n;
     }

// アクセサ メソッド
public string getAge() { return age ; }

public string getName() {
    return name;
     }


}
于 2013-10-17T19:52:30.570 に答える