所以我开始在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”这个词,我们是否在某个地方声明了这一点,因为计算机如何知道这甚至意味着什么?
b1),(Person friend)是什么意思,我们是如何声明/获取它的?参数中的单词friend(Person friend),单词friend不能是实例变量,因为我们创建的实例变量是“朋友”而不是“朋友”,对吗?
对于friend.name,A2),是“朋友”的对象吗? B2)我假设“.name”是实例变量? C1)为对象分配变量我们总是把对象放到.variableName吗?
最后作为一个单独的问题:你如何弄清楚我们应该使用添加好友方法的方法,我在谈论过程/概念,即我们看看对象是什么,然后弄清楚放入什么方法参数???
先谢谢你的帮助,请原谅我的noob-e-ness:)
答案 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)
,则无法看到。
但是,是的,他们的意思是friend
是Person
的一个实例。
要解决此问题,请将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)
Class是对象的蓝图。在设计类时,请考虑那些对象 将从该类类型创建。对象知道的事物称为实例变量,对象可以做的事情称为方法。
在类中声明实例时,它会存储由不同引用变量引用的不同对象的信息。所以它存储了几个对象的信息。
A1。在类中声明公共方法时,不需要在其他地方声明它以让编译器知道该方法。创建引用变量时,它将可以访问该方法。所以该方法是对象的一部分。
B1。参数是方法的“Person”类型及其“local”。因此在类“friends”中声明的变量和参数“friend”完全没有连接。它将“人类型对象”作为参数。
A2 + B2 + C1。对于“friend.name”,您只能通过引用变量“friend”引用对象。你知道一个对象可以有两种类型的东西......实例变量和方法。