编译时多态:例子:一个对象具有多个构造函数(重载)
运行时多态:例子:子类赋值给父类,调用父类的方法(已被子类重写)的时是调用的子类的行为(重写)
早绑定(编译时) 就是静态多态(重写) 晚绑定(重载) 动态多态(运行时)
继承关系是一个 is-a 的关系
曾经的学习笔记~~~直接粘贴过来了

解决方案 »

  1.   

    动态绑定(动态绑定):
    在运行时根据具体对象的类型进行绑定。
    若一种语言实现了后期绑定,同时必须提供一些机制,可在运行期间判断对象的类型,
    并分别调用适当的方法。也就是说,编译器此时依然不知道对象的类型,
    但方法调用机制能自己去调查,找到正确的方法主体。
    不同的语言对后期绑定的实现方法是有所区别的。但我们至少可以这样认为:
    它们都要在对象中安插某些特殊类型的信息。
    动态绑定的过程:
    1.虚拟机提取对象的实际类型的方法表;
    2.虚拟机搜索方法签名;
    3.调用方法。
    关于绑定相关的总结:
    在了解了三者的概念之后,很明显我们发现java属于后期绑定。在java中,几乎所有的方法都是后期绑定的,在运行时动态绑定方法属于子类还是基类。
    但是也有特殊,针对static方法和final方法由于不能被继承,因此在编译时就可以确定他们的值,他们是属于前期绑定的。特别说明的一点是,private声明的方法和成员变量不能被子类继承,所有的private方法都被隐式的指定为final的(由此我们也可以知道:将方法声明为final类型的一是为了防止方法被覆盖,二是为了有效的关闭java中的动态绑定)。java中的后期绑定是有JVM来实现的,我们不用去显式的声明它,而C++则不同,必须明确的声明某个方法具备后期绑定。
     
    java当中的向上转型或者说多态是借助于动态绑定实现的,所以理解了动态绑定,也就搞定了向上转型和多态。
    前面已经说了对于java当中的方法而言,除了final,static,private和构造方法是前期绑定外,其他的方法全部为动态绑定。而动态绑定的典型发生在父类和子类的转换声明之下:还有些代码:
    http://blog.csdn.net/sc6231565/article/details/25569517