Jon*_*eet 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();
Run Code Online (Sandbox Code Playgroud)
尽管对象本身(在执行时)支持该方法,但是类型的变量Bike
意味着您只能访问Bike
由其及其超类声明的成员.