多态的理解:定义一个类似的方法给一个或多个类使用。
多态建立在继承的基础上。“is -a”的规则表明子类的每一个对象也是超类的对象。对象变量是多态的,一个类的变量可以引用他本身的对象,也可以引用他的任何一个子类的对象。如Aanimal类,cat类和dog类扩展了Animal类,Animal a=new Animal()变量a 指向本身类Animal对象,Animal a=new Cat();是父类的引用指向子类的对象,所以说对象的变量是多态的。
动态绑定:-----对象方法的执行过程
 详解调用过程:
 1)编译器查看对象的声明类型和方法名。获得所有可能被调用的候选方法。
 2)编译器查看调用方法提供的参数类型,获得调用方法名和参数类型。
 3)如果是private,static,final方法或构造方法,编译器将准确的知道应该调用那一个方法。
 4)如果调用方法依赖于隐式参数的实际类型,编译器就采用动态绑定的方式生成一条调用的指令。 程序在运行时,虚拟机一定调用与x所引用对象的实际类型最合适的那个类的方法。
    如:假设x的实际类型是D,它是C的子类,如果D定义了f的方法,就直接调用它,如果没有,则在D的超类中寻找f。
 虚拟机预先为每一个类创建一个方法表,其中列出所有的方法的签名和实际调用的方法。真正调用这个方法的时候,虚拟机仅仅查找这个表就可以了。
   
posted on 2009-08-17 20:36  萱萱草  阅读(180)  评论(0编辑  收藏  举报