Java - 使用Accessor和Mutator方法

时间:2013-03-29 21:08:52

标签: java accessor mutators

我正在做家庭作业。我对它应该如何完成感到困惑。

问题是:

  

创建一个名为IDCard的类,其中包含一个人的姓名,ID号,   以及包含该人的photogrpah的文件的名称。写   每个字段的访问器和mutator方法。添加   跟随两个重载的构造函数到类:

     

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

     

使用这两个来创建不同的ojbect来测试您的程序   构造函数并使用。在控制台上打印出它们的值   访问者和变异者方法。

到目前为止我已经重写了这个:

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;
    }
}

2 个答案:

答案 0 :(得分:34)

让我们回顾一下基础知识: “Accessor”和“Mutator”只是一个吸引人和一个二传手的奇特名字。 getter,“Accessor”,返回类的变量或其值。 setter“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;
}
哇 - 太好了。但是很愚蠢。因为我们无法访问(=读取)变量的值。所以让我们添加一个getter,当我们在它的时候,添加一个setter:

public String getName()
{
    return mName;
}

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

尼斯。现在我们可以访问mName了。添加其余的访问器和mutator,你现在是一个经过认证的Java新手。 祝你好运。

答案 1 :(得分:3)

您需要从访问者方法中删除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