Vtable,计算机术语,中文译名虚函数表,简称虚表。每一个有虚函数的类都有这样一个东西。实际上记录了本类中所有虚函数的函数指针,也就是说是个函数指针数组的起始位置。Vtable虚表。比如virtual void TheSecondFun()记录在数组的第二个元素,当一个该类的对象实例调用TheSecondFun时就根据对应关系把第二个函数指针取出来,再去执行该函数,这种行为叫晚绑定,也就是说在运行时才知道调用的函数是什么样子的,而不是在编译阶段就确定的早绑定。
多态
Java是一门面向对象的编程语言,面向对象的一-大特色便是多态。 多态的具体体现便是在运行期能够根据对象实例的不同而执行不同的接口方法,换成业界对多态的标准定义便是:允许不同类的对象对同一-消息做出响应,即同一-消息可以 根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。多态是面向对象编程的特性,而这种特性并不仅仅是喊贼口号就算的,而是必须使用特定的机制或技术去实现。实现多态的技术称为动态绑定(dynamicbinding).是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
在Java中,动态绑定也叫“晚绑定”.这是因为在Java中还有一-类绑定 是在编译期间便能确定,所以所谓的晚绑定的概念,是相对于编译期绑定而言的。面向对象编程语言之所以要实现多态这一-特性, 最主要的目的就是为了消除类型之间的耦合关系,通俗地讲就是解桐。从计算机软件一产生,“解糊”便是一切计算机程序所要重点考虑的原则之-一。 其实何止是软件.计算机硬件之间也是以解糊为主要原则的,这类例子举不胜举,例如内存插槽,10接口之类,都是实现解耦的手段。解耦的最大好处在于,一-旦系统发生了变化,能够将变化降低到最小,仅变化新增的部件,而对于已经存在的部件,则尽量保持不变。所以-一个优秀的系统设计师总是想办法设计拥有良好兼容性和扩展性的架构,而面向对象语言的多态性,则是从语言特性上直接实现对象的解桐,这极大地提升了面向对象编程语言构建一套高内聚、 低耦合系统的能力。由于多态通过“动态绑定”的方式得以实现,而绑定通俗一点讲就是让不同的对象对同一个函