若是编译时类型和运行时类型不一致,会出现所谓的多态。由于子类实际上是一种特殊的父类,所以java容许把一个子类对象直接赋值给一个父类引用变量,无须任何类型转换,或者被称为向上转型,由系统自动完成。java
如 :code
Father f = new Son();
Son是Father的子类,引用变量f就会出现编译时类型和运行时类型不一致的状况,编译时是Father
类型的,运行时是Son
类型。当变量的编译时类型和运行时类型不一致时,经过变量访问它所引用的对象的实例时,该实例变量的值由声明该变量的类型
决定。经过变量访问它所引用的对象的方法时,该方法的行为由所引用的对象实际类型
所决定。对象
static成员变量
、成员变量
、static方法
使用的是Father中的类型方法
使用的是Son中的类型