[size=small]Java中除了static和final方法外,其他所有的方法都是运行时绑定的。private方法都被隐式指定为final的,因此final的方法不会在运行时绑定。当在派生类中重写基类中static、final、或private方法时,实质上是创建了一个新的方法。
可以传递多个IS-A测试的任何Java对象都可以被看作是多态的。除了Object类型的对象之外,其他所有Java对象都是多态的,这在于它们为自己的类型以及Object类型传递IS-A测试。
[b]多态方法调用仅适用于实例方法。总是可以利用更一般的引用变量类型(超类或接口)引用一个对象,但是在运行时,基于实际对象(而不是引用类型)动态选择的唯一事物是实例方法,而不是静态方法,也不是变量。只有基于实际对象的类型动态地调用重定实例的方法。[/b]
以下是关于多态性的一些总结:
1. 多态性意指“多种形式”;
2. 引用变量总是单一、不可变的类型,但是它可以引用子类型对象;
3. 单一对象可以被除数许多不同类型的引用变量引用,只要它们具有对象的相同类型或者子类型;
4. 引用变量的类型(而不是对象的类型)决定了可以调用哪些方法;
5. 多态的方法调用仅适用于被重写的实例方法,而不适用于重载的方法。[/size]
可以传递多个IS-A测试的任何Java对象都可以被看作是多态的。除了Object类型的对象之外,其他所有Java对象都是多态的,这在于它们为自己的类型以及Object类型传递IS-A测试。
[b]多态方法调用仅适用于实例方法。总是可以利用更一般的引用变量类型(超类或接口)引用一个对象,但是在运行时,基于实际对象(而不是引用类型)动态选择的唯一事物是实例方法,而不是静态方法,也不是变量。只有基于实际对象的类型动态地调用重定实例的方法。[/b]
以下是关于多态性的一些总结:
1. 多态性意指“多种形式”;
2. 引用变量总是单一、不可变的类型,但是它可以引用子类型对象;
3. 单一对象可以被除数许多不同类型的引用变量引用,只要它们具有对象的相同类型或者子类型;
4. 引用变量的类型(而不是对象的类型)决定了可以调用哪些方法;
5. 多态的方法调用仅适用于被重写的实例方法,而不适用于重载的方法。[/size]