对象的类型转换

java语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。把引用类型转换为子类类型,则称为向下转换;如果把引用类型转换为父类类型,则称为向上转型。

Animal animal=new Dog();

Dog dog=(Dog)animal;//向下转型,把Animal类型的转换为Dog类型,必须进行强制类型转换

Creature creature=animal;//向上转型,把Animal类型的转换为Creature类型,不需要强制类型转换

通过引用类型变量来访问所引用对象的属性和方法时,java虚拟机将采用以下绑定规则:

1、实例方法是与引用变量实际引用的对象的方法进行绑定的,属于动态绑定,因为实在运行时由JAVa虚拟机动态决定的。例如:animal.eat()将eat()方法与Dog类绑定。

2、静态方法与引用变量所声明的类型的方法绑定,属于静态绑定。因为实在编译阶段就已经做了决定。animal.staticEat()将staticEat()与Animal类绑定

3、成员变量(静态变量和实例变量)与引用变量所声明的类型的成员变量绑定,属于静态绑定,同上,animal.name与animal.staticName都与Animal类绑定。

原文地址:https://www.cnblogs.com/tjlgdx/p/6141615.html