在对象创建中,
自行车 b = new Honda();
对象是为哪个类创建的……是为本田还是为自行车?
自行车是父类,本田是子类。
创建了一个类型的对象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
及其超类。
Object
(或)将为Honda
类创建实例。
符号左侧=
表示引用是类型Bike
,右侧是实例。
一个Object
of 类型Honda
被创建。
此外, “实例化一个类”这个短语与“创建一个对象”的含义相同。当您创建 时object
,您正在创建一个instance
类的“”,因此“实例化” a class
。
该对象的类型为Honda
。
b instanceof Honda == true
另一方面,变量是类型Bike
Object
类型的Honda
类将被创建,但它将存储在类型的变量Bike
中,确保这Bike
是...的派生类Honda