7

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

问题是:

创建一个名为 IDCard 的类,其中包含一个人的姓名、ID 号和包含该人的照片的文件的名称。为每个字段编写访问器和修改器方法。将以下两个重载构造函数添加到类中:

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

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

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

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

2 回答 2

44

让我们回顾一下基础知识:“Accessor”和“Mutator”只是 getter 和 setter 的花哨名称。一个 getter,“Accessor”,返回一个类的变量或它的值。设置器“Mutator”设置类变量指针或其值。

所以首先你需要设置一个包含一些变量的类来获取/设置:

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

}

但是哦不!如果您实例化此类,这些变量的默认值将毫无意义。顺便说一句,“实例化”是一个花哨的词:

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. 添加其余的访问器和修改器,您现在是经过认证的 Java 新手。祝你好运。

于 2013-03-29T21:50:34.770 回答
4

您需要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. 符合命名约定,使用小写的变量名 - namenot Name.
于 2013-03-29T21:28:15.960 回答