问:我不太了解 Java Objects 中教授的概念。Java 中的第一部分更容易理解,但是在 Java 对象中,我几乎没有想到任何东西。是的,我能够完成所有测验,但我对此感到不舒服。
PezDispenser 分配器 = new PezDispenser ( "Mapring" );
在这一行中,我知道分配器是变量。PezDispenser 是对象,但它有什么意义呢?你可以把我当成我对这条线一无所知。
系统。出来。的printf (“分配器字符为%s \ n”个, 分配器。getCharacterName ());
我不明白为什么分配器需要与 .getCharacter 结合使用。这是将变量从上一行传递到这一行的方法吗?
公共 类 PezDispenser {
私有字符串mCharacterName ; 公共PezDispenser ( String characterName ) { mCharacterName = characterName ; } public String getCharacterName () { return mCharacterName ; } }
所有这一切实际上都是如此令人困惑。我真的不知道如何解释我不明白的部分,因为我只是不明白。任何帮助将不胜感激。如果我再重温一遍是不是最好?
答:显然你学到的比你想象的要多!你的理解并不遥远。
让我们依次回答您的问题。首先,你问的是什么:
PezDispenser 分配器 = new PezDispenser ( "Mapring" );
这一行创建了一个新的实例/对象PezDispenser。该对象被调用,dispenser但您可以随意调用它。该实例以及您创建的任何其他实例都具有在类中定义的某些属性。类是PezDispensers制作所有内容的模板。
目前,PezDispenser该类具有一个存储属性/成员变量——这意味着该类的每个实例也具有该属性。那就是mCharacterName。当您创建它时,dispenser您将值“Mapring”分配给该成员变量/属性。(这就是构造函数所做的,它们使用您传递给它们的值来设置您的实例)。属性的访问权限mCharacterName, 设置为private意味着您不能直接使用它;您需要使用访问器方法,也称为 getter 和 setter 方法。其中之一是getCharacterName(),它就是这样做的 - 它转到实例并获取存储在mCharacterName. 对于您的实例,它会发回“Mapring”。
每个实例PezDispenser都有这个方法。所以,为了让编译器知道你想命名哪个实例,你用一个点链接名称,然后是方法名称。因此,您所质疑dispenser.getCharacterName();的那段代码是要求存储在mCharacterNameinstance 中的值dispenser。
如果我们创造了另一个实例,并把它称为,anotherDispenser然后我们有两个实例,该方法将在两个工作的意义,anotherDispenser.getCharacterName();将返回无论是存储在mCharacterName在anotherDispenser实例。
让我知道这是否有意义 - 显然,请随时提出任何其他问题。