当调用一个对象的一个函数时, 系统会首先去检查该对象的声明类中这个函数是不是虚函数, 如果不是虚函数就直接执行函数. 如果是虚函数的话再去检查这个对象的实例类, 看看实例类中有没有重写这个虚函数, 如果有的话就直接执行该函数, 否则就去找这个实例类的父类, 看看他的父类中有没有重写这个虚函数,有的话就执行, 没有的话就继续找直到找遍所有父类, 如果没有override关键字, 最后会执行申明类里的虚函数.如果要深入地掌握面向对象编程,就必须把这三个特性,使用得滚瓜烂熟,才可以得心就手,才能写出好用的代码。