来自Class对象的RTTI(一)
The normal goal in object-oriented programming is for your code to manipulate references to the base type.(面向对象编程中的基本目的是:让代码只操纵对基类的引用)——引自Thinking in java
如果有一天,当你发现编程对你来说变得愈发简单时,回头看一看你写过的代码,你会恍然大悟——原来多态无处不在。书中常说,面向基类(接口)的编程使代码更容易写、更容易读、更容易维护,设计上也更容易实现、理解和改变。我觉得这不是重点,重要的是这些特性会让你越来越喜欢他,而当你越来越喜欢它的时候,你所感受到的那种快乐已经远远超过了这些优点所带来的快感。
直入正题,为了进一步的了解多态,我们应该先了解一下动态绑定(Dynamic Binding)与静态绑定(Static Binding)。
一、动态绑定与静态绑定
1、动态绑定
动态绑定是指,在执行期间判断所引用对象的实际类型,根据其实际类型调用其方法。动态绑定又名后期绑定(Late Binding),可以这样理解动态绑定,在编译期无法解析调用的方法,只有在运行时才能正确解析。如下示例。
start from main methodLoading First!After creating FirstLoading Second!After Creating SecondLoading Third!After creating Third