为了账号安全,请及时绑定邮箱和手机立即绑定

什么是类,引用和对象?

什么是类,引用和对象?

蛊毒传说 2019-08-26 14:20:47
什么是类,引用和对象?我已经编程java 2年了,显然我遇到了一个问题,我无法理解并再次区分类,引用和对象(我不明白为什么我会忘记这些概念)。让我们来解决问题,即我不确定类或引用是否相同,尽管我已经知道什么是对象。有人能够以一种好的,可理解的和完整的方式区分什么是类,引用和对象?我所知道的是,这个类更像是一个对象的模板(一个房子的蓝图,其中类是蓝图而房子是一个对象)。
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

如果你喜欢住房隐喻:

  • 堂课就像房子的蓝图。使用此蓝图,您可以根据需要构建尽可能多的房屋。

  • 您构建的每个房屋(或在OO术语中实例化)都是一个对象,也称为实例

  • 当然,每个房子也有一个地址。如果你想告诉某人房子的位置,你可以给他们一张上面写有地址的卡片。该卡是对象的参考

  • 如果您想访问房子,请查看卡上写的地址。这称为解除引用

您可以根据需要复制该引用,但只有一个房子 - 您只是复制具有地址的卡,而不是房屋本身。

在Java中,您无法直接访问对象,您只能使用引用。Java不会相互复制或分配对象。但是您可以复制并分配对变量的引用,以便它们引用同一个对象。Java方法总是按值传递,但值可以是对象的引用。所以,如果我有:

Foo myFoo = new Foo();     // 1

callBar(myFoo);            // 2

myFoo.doSomething()        // 4


void callBar(Foo foo) {

    foo = new Foo();       // 3

}

然后让我们看看发生了什么。

  1. 第1行中发生了一些事情。new Foo()告诉JVM使用Foo蓝图构建一个新房子。JVM这样做,并返回对房屋的引用。然后,您将此引用复制到myFoo。这基本上就像要求承包商为你建房子。他这样做,然后告诉你房子的地址; 你写下这个地址。

  2. 在第2行中,您将此地址提供给另一种方法callBar。我们接下来跳转到那个方法。

  3. 在这里,我们有一个参考Foo foo。Java是通过按值,所以foocallBar是一个拷贝的的myFoo参考。可以想象它就像给callBar自己的卡片上面有房子的地址一样。什么是callBar与此卡怎么办?它要求建造一个新房子,然后用你给它的卡片写下新房子的地址。请注意,callBar现在无法到达第一个房子(我们在第1行建造的那个房子),但是这个房子没有改变,因为过去在其上有地址的卡,现在有一些其他房屋的地址。

  4. 回到第一种方法,我们取消引用myFoo调用它的方法(doSomething())。这就像看卡片,去卡片上的地址,然后在那个房子里做点什么。请注意,我们myFoo的地址卡的callBar方法没有改变- 请记住,我们提供callBar一份参考资料。

整个序列将是这样的:

  1. 请求JVM建造房屋。它确实给了我们地址。我们将此地址复制到名为的卡片中myFoo

  2. 我们援引callBar。在我们开始之前,我们将写入的地址复制myfoo到我们提供的新卡上callBar。它叫那张卡片foo

  3. callBar问JVM另一所房子。它创建它,并返回新房子的地址。callBar将此地址复制到我们提供的卡片上。

  4. 回到第一种方法,我们看看我们原始的,未更改的卡片; 去我家卡上的地址; 并在那里做点什么。


查看完整回答
反对 回复 2019-08-26
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

当你编码时,你建立一个

实例(发生,复制)

一个

宾语

一说

并保持一个

参考

它,所以你可以调用它的方法。

此外,一些OOP基础:对象实例引用


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 1147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信