运行期类型鉴定(RTTI)的概念初看非常简单,声明为基类的对象,在使用时自动检测它的实际类型。然而RTTI却呈现出了面向对象的一个很有趣很强大的特性——多态性——这在我们设计java源码的时候会节省很多功夫,而且会让你的程序耦合度更低。
废话少说,先看例子:
运行这段代码后会输出什么东西呢?不了解RTTI的同学可能会认为输出三行this is parent class;实际则不然,正确的输出是:
this is child class1
this is child class2
this is child class3
java运行时会自动检测当前对象的实际类型,例如数组的第一个元素是MyChildClass1类型的,调用它的showMessage方法,输出的是this is child class1。