【问题标题】:Difference Between Object Type and Reference Type对象类型和引用类型之间的区别
【发布时间】:2013-05-19 18:26:04
【问题描述】:

我是从“Head First Java”开始研究多态性并得出这个概念的。谁能举个例子解释一下?

编译器检查引用类型的类——而不是对象类型。

那么引用类型和对象类型有什么区别呢?

【问题讨论】:

  • 你能添加更多上下文吗?
  • is.gd/9hXyID 看看这里,

标签: java oop object polymorphism


【解决方案1】:

我不认为他们对“对象类型”和“引用类型”的使用是标准化的,但这是我的解释。

考虑这段代码:

Object o = new Integer(3);

引用o 的类型为Object。它引用的 object 类型为 Integer

所以“引用类型”是Object,“对象类型”是Integer

令人困惑的是,有一个(标准化的、官方的)术语“reference type”封装了可以引用的类型。在包含所有类、枚举、接口、数组的 Java 中。它仅排除原始类型(int,...)。

【讨论】:

  • 如果不是“对象类型”和“引用类型”,那么在这个多态声明中描述这两种类型的更正确的方法是什么?我不得不说我听说过使用对象类型和引用类型来描述 Java 和 Swift 中的多态性,我很好奇更官方的术语是什么。
  • 我只称它们为“引用的类型”和“对象的类型”。是的,这显然可以分别缩短为“引用类型”和“对象类型”,但由于与现有定义的冲突,我会避免这些特定的缩短。
  • 另一种描述多态声明的方式是“声明”类型和“真实”类型。在上面的示例中,o 的声明类型为 Object,而 o 的实际类型为 Integer。
  • @Adam:我认为“真实”具有误导性,因为变量的类型不亚于对象的类型。
【解决方案2】:

这些术语的含义如下:

  • 对象类型(在你的书中)=所指对象的实际运行时类型
  • 引用类型(在你的书中)=引用的静态类型

也许有些人会发现使用这些术语更容易理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    相关资源
    最近更新 更多