-1

在对象创建中,

自行车 b = new Honda();

对象是为哪个类创建的……是为本田还是为自行车?

自行车是父类,本田是子类。

4

5 回答 5

13

创建了一个类型的对象Honda变量的类型为Bike。变量的值是一个引用 - 该引用必须始终是null值,或者它必须引用与兼容的类型的对象Bike,才能成为b变量的值。这很好,因为类型与Honda类型是赋值兼容的Bike

b.getClass()例如,如果您打印出来,那仍然会显示Honda,因为那是指对象的执行时类型。但是,如果有任何方法仅由Honda(而不是Bike)声明,那么您将无法直接调用它们b

// This would be invalid, assuming that getHondaGarage is declared in Honda
String garage = b.getHondaGarage();

即使对象本身(在执行时)支持该方法,变量的类型Bike意味着您只能访问由其声明的成员Bike及其超类。

于 2013-07-09T05:05:50.173 回答
4

Object(或)将为Honda类创建实例。

符号左侧=表示引用是类型Bike,右侧是实例。

于 2013-07-09T05:05:44.427 回答
2

一个Objectof 类型Honda被创建。

此外, “实例化一个类”这个短语与“创建一个对象”的含义相同。当您创建 时object,您正在创建一个instance类的“”,因此“实例化” a class

于 2013-07-09T05:06:16.207 回答
1

该对象的类型为Honda

b instanceof Honda == true

另一方面,变量是类型Bike

于 2013-07-09T05:08:13.583 回答
1

Object类型的Honda类将被创建,但它将存储在类型的变量Bike中,确保这Bike是...的派生Honda

于 2013-07-09T05:09:02.403 回答