对实例变量感到困惑,创建新对象和方法?

时间:2013-09-27 07:47:55

标签: java class object methods instance-variables

所以我开始在Udacity上用Java挖手,最近我遇到了这个我需要帮助的问题。链接:https://www.udacity.com/course/viewer#!/c-cs046/l-183784769/e-186954461/m-188821863

问题

好的,我很困惑,需要帮助。

到目前为止,我“认为”我们已经了解到,在java编程中,我们创建类,在这些类中我们创建对象(?)并创建使用这些对象的方法,我们使用变量来存储这些对象。如果我错了,请纠正我......

我理解实例变量是该类中所有方法都可以访问的变量。 所以在这种情况下:private String name; private String friends; - 这些实例变量存储在它们中,是你的名字和朋友的名字吗?

公共接口基本上是方法头/标题(?) - 在这种情况下,这是:public void addFriend(Person friend) a1)因此,对于“addFriend”这个词,我们是否在某个地方声明了这一点,因为计算机如何知道这甚至意味着什么?

addFriend方法的参数中的

b1),(Person friend)是什么意思,我们是如何声明/获取它的?参数中的单词friend(Person friend),单词friend不能是实例变量,因为我们创建的实例变量是“朋友”而不是“朋友”,对吗?

对于friend.name,

A2),是“朋友”的对象吗? B2)我假设“.name”是实例变量? C1)为对象分配变量我们总是把对象放到.variableName吗?

最后作为一个单独的问题:你如何弄清楚我们应该使用添加好友方法的方法,我在谈论过程/概念,即我们看看对象是什么,然后弄清楚放入什么方法参数???

先谢谢你的帮助,请原谅我的noob-e-ness:)

3 个答案:

答案 0 :(得分:1)

  
    

这些实例变量存储在它们中,是你的名字和朋友的名字

  

是。他们的类型是String所以它只是期待一个字符串,如“Bob”,或“Felicia”,或“Curtis”。您甚至可以将它设置为“水瓶”或“屏幕门”或其他东西,只要它是一个字符串。

但是friends是一个字符串的奇怪名称,因为它建议不止一个朋友 - 通常会使用List。但也许你还没有学到这一点。

  
    

公共接口基本上是方法头/标题(?) -

  

接口是类的模板。有些人喜欢“合同”这个词。它只是告诉班级“你必须有这些方法:blah(),blee()和bloo()”。

您的示例不使用接口,因此我不能更具体。

  
    

所以这里的“addFriend”这个词,我们在某个地方宣布了这个,因为计算机怎么知道这甚至意味着什么?

  

这是一种方法,所以当你制作一个新的时候,它就会与这个课程捆绑在一起。稍后,当您实例化某人(即Person Joe = new Person())时,您可以致电addFriend()给Joe一个朋友。

您可以实例化一堆Person个类,每个类都有自己的addFriend方法。

  
    

在addFriend方法的参数中,(Person friend)是什么意思,我们是如何声明/获取它的?

  

见最后的答案。

  
    

论坛中的朋友(朋友),朋友这个词不能是实例变量,因为我们创建的实例变量是“朋友”而不是“朋友”,对吗?

  

参数friend是方法的本地参数。它在方法之外是不可见的。所以你可以随意调用它。

我喜欢在参数参数中附加0,所以我很快就知道它们是参数,如下所示:

public void addFriend(Person friend0)
{
    ...do stuff with friend0...
}
  
    

对于friend.name,是“朋友”的对象吗?

  

这有点误导这是错误的,因为name是私有的,如果您说Person Joe = new Person(); System.out.println(Joe.name),则无法看到。

但是,是的,他们的意思是friendPerson的一个实例。

要解决此问题,请将name公开(不推荐)或编写getName()方法,如下所示:

public String getName()
{
    return name;
}

这种方式更好,因为您不能在以后意外更改(重置)某人的姓名。

  
    

我假设“.name”是实例变量?

  

“实例”是指您创建新课程。实例变量是类中的变量。所以name一个实例变量,但不是唯一一个。

  
    

为对象分配变量我们总是把对象放在.variableName吗?

  

您可以输入类型,然后输入名称,例如int x = ...String address = ...。例如,就像我之前说过的那样,如果你有很多Person,你会告诉Java类似

Person Joe = new Person();
Person Wilhelmina = new Person();
Person Winifred = new Person();

...然后你将朋友和东西添加到每个特定的实例(每次你创建一个新的类,它被称为实例)。

  
    

你怎么知道我们应该添加好友方法的方法

  

侧面的手写潦草表示只是将朋友姓名附加到friends字符串。因此,该方法会收到friend类型Person,然后您可能需要调用getName()将其名称作为String,然后将其附加到该实例的{ {1}}。

答案 1 :(得分:0)

你的课是你的对象。您可以在类中定义构造函数(如何实例化对象)。然后,您可以创建对象将使用的方法。例如,contact.getName()。对不起,我无法提供更详细的答案,我正在通过手机回复。

答案 2 :(得分:0)

  1. Class是对象的蓝图。在设计类时,请考虑那些对象 将从该类类型创建。对象知道的事物称为实例变量,对象可以做的事情称为方法。

  2. 在类中声明实例时,它会存储由不同引用变量引用的不同对象的信息。所以它存储了几个对象的信息。

  3. A1。在类中声明公共方法时,不需要在其他地方声明它以让编译器知道该方法。创建引用变量时,它将可以访问该方法。所以该方法是对象的一部分。

    B1。参数是方法的“Person”类型及其“local”。因此在类“friends”中声明的变量和参数“friend”完全没有连接。它将“人类型对象”作为参数。

    A2 + B2 + C1。对于“friend.name”,您只能通过引用变量“friend”引用对象。你知道一个对象可以有两种类型的东西......实例变量和方法。