web-dev-qa-db-ja.com

Java-アクセサおよびミューテータメソッドの使用

私は宿題に取り組んでいます。それがどうあるべきか私は混乱しています。

質問は:

人の名前、ID番号、および人のphotogrpahを含むファイルの名前を含むIDCardというクラスを作成します。これらのフィールドごとに、アクセサメソッドとミューテータメソッドを記述します。次の2つのオーバーロードされたコンストラクターをクラスに追加します。

public IDCard()public IDCard(String n、int ID、String filename)

これらの2つのコンストラクターを使用して異なるオブジェクトを作成し、アクセサーメソッドとミューテーターメソッドを使用してそれらの値をコンソールに出力することにより、プログラムをテストします。

これまでにこれを書き直しました:

public class IDCard {
String Name, FileName;
int ID;

public static void main(String[] args) {

}

public IDCard()
{
    this.Name = getName();
    this.FileName = getFileName();
    this.ID = getID();
}

public IDCard(String n, int ID, String filename)
{

}

public String getName()
{
    return "Jack Smith";
}

public String getFileName()
{
    return "Jack.jpg";
}

public int getID()
{

        return 555;
    }
}
6
Pichu

基本を復習しましょう。「Accessor」と「Mutator」は、getterとsetterの単なる仮名です。ゲッター「Accessor」は、クラスの変数またはその値を返します。セッター「Mutator」は、クラス変数ポインターまたはその値を設定します。

したがって、最初に、取得/設定するいくつかの変数を持つクラスを設定する必要があります。

public class IDCard
{
    private String mName;
    private String mFileName;
    private int mID;

}

しかし、ああ!このクラスをインスタンス化すると、これらの変数のデフォルト値は無意味になります。 B.T.W. 「インスタンス化」とは、以下を行うための豪華な言葉です。

IDCard test = new IDCard();

したがって、デフォルトのコンストラクタを設定しましょう。これは、クラスを「インスタンス化」するときに呼び出されるメソッドです。

public IDCard()
{
    mName = "";
    mFileName = "";
    mID = -1;
}

しかし、変数に与えたい値がわかっているとしたらどうでしょう。それでは、パラメータを取る別のコンストラクタを作成しましょう。

public IDCard(String name, int ID, String filename)
{
    mName = name;
    mID = ID;
    mFileName = filename;
}

うわーこれはいいです。しかし愚か。変数の値にアクセスする(=読み取る)方法がないからです。それでは、ゲッターを追加してみましょう。その間に、セッターも追加します。

public String getName()
{
    return mName;
}

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

いいね。これでmNameにアクセスできます。残りのアクセサーとミューテーターを追加すると、認定されたJava初心者です。頑張ってください。

37
Vaiden

アクセサーメソッドからstaticを削除する必要があります-これらのメソッドはインスタンスメソッドであり、インスタンス変数にアクセスする必要があります

public class IDCard {
    public String name, fileName;
    public int id;

    public IDCard(final String name, final String fileName, final int id) {
        this.name = name;
        this.fileName = fileName
        this.id = id;
    }

    public String getName() {
        return name;
    }
}

IDCardを作成して、次のようにアクセサーを使用できます。

final IDCard card = new IDCard();
card.getName();

newを呼び出すたびに、IDCardの新しいインスタンスが作成され、3つの変数の独自のコピーが作成されます。

staticキーワードを使用する場合、これらの変数はIDCardのすべてのインスタンスで共通です。

心に留めておくべきいくつかのこと:

  1. 役に立たないコメントを追加しないでください。コードが煩雑になるだけです。
  2. 命名規則に準拠し、変数名の小文字を使用します-nameではなくName
3