引用类型和对象类型

2022-09-04 01:45:48

我正在指导一位同事OCA-Java 7认证。他还参加了一门课程,并在那里做了一个准备考试。其中一个问题是关于引用和对象类型。代码如下:

package com.company;

public class Vehicle implements Mobile {

  public static void main(String[] args) {
    Truck theTruck = new Truck();
    Vehicle theVehicle = theTruck;
    Mobile theMobile = theVehicle;
  }
}

class Truck extends Vehicle {
}

interface Mobile {
}

问题:什么是引用类型和对象类型?theMobile

以下是选择:

  • 引用类型为“移动”,对象类型为“移动”
  • B 引用类型为“卡车”,对象类型为“卡车”
  • C 引用类型为“移动”,对象类型为“卡车”
  • D 参考类型为“汽车”,对象类型为“移动”

答案 B 被标记为正确答案...但恕我直言,答案C是对的。谁错了?!


答案 1

我从未见过这些术语用于此目的,但我认为它们意味着声明的类型与运行时类型。

Mobile theMobile = theVehicle;

该变量具有 声明的类型和运行时类型 。答案 C 是正确的。MobileTruck

术语引用类型是指 Java 中不是基元且不是该类型的任何类型。null


答案 2

这里出了什么问题?

在你的书/材料中打印的答案是错误的,:p

类型的引用变量引用类型的对象。theMobileMobileTruck

所以答案 3 是正确的,引用类型是 ,对象类型是 。MobileTruck

您可以检查将返回的对象类型,并且引用类型是代码中静态声明的内容,该类型位于声明中。theMobile.getClass()TruckMobileMobile theMobile = ...


推荐