多态,又可以称为动态绑定,即在运行时确定类型,比如:
1 class A { 2 void draw(){ 3 //输出“A” 4 } 5 } 6 class B { 7 void draw(){ 8 //输出“B” 9 } 10 11 }
这种关系里,如果调用A a = new B();
此时,被称为向上转型,a的类型可能在很早之前被生命,而在这时候被明确指明是其子类型,
我们如果要去调用draw()方法的时候,会调用输出“B”,这样,便是Java中的“多态”。我们称其为“向上转型”。
但是,如果B中还有其他方法的时候,A型的a是不能调用其方法的,必须将a通过强制类型转换转成B型才可以调用。我们称其为“向下转型”。
与此同时,如果是一个A a = new A();这种正常的实例化的时候,对其进行向下转型,在Eclipse中和编译是不报错的,但是程序运行起来后会报一个ClassCastException错误,这种在程序运行期间进行类型检查的机制称为“RTTI”(Runtime Type Identify,运行时类型识别)。