在对象创建中,
自行车 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,右侧是实例。
一个Objectof 类型Honda被创建。
此外, “实例化一个类”这个短语与“创建一个对象”的含义相同。当您创建 时object,您正在创建一个instance类的“”,因此“实例化” a class。
该对象的类型为Honda。
b instanceof Honda == true
另一方面,变量是类型Bike
Object类型的Honda类将被创建,但它将存储在类型的变量Bike中,确保这Bike是...的派生类Honda