<pre>
概念介绍
-
定义
多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。
-
实现技术
动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
-
作用
消除类型之间的耦合关系。
-
应用场景
现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。
深入理解多态
**多态存在的三个必要条件:
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。**
**Java中多态的实现方式:
接口实现
继承父类进行方法重写
同一个类中进行方法重载**
- 方法表与方法调用
Java 的方法调用有两类,动态方法调用与静态方法调用。静态方法调用是指对于类的静态方法的调用方式,是静态绑定的;而动态方法调用需要有方法调用所作用的对象,是动态绑定的。类调用 (invokestatic) 是在编译时刻就已经确定好具体调用方法的情况,而实例调用 (invokevirtual) 则是在调用的时候才确定具体的调用方法,这就是动态绑定,也是多态要解决的核心问题。
方法表是动态调用的核心,也是 Java 实现动态调用的主要方式。它被存储于方法区中的类型信息,包含有该类型所定义的所有方法及指向这些方法代码的指针,注意这些具体的方法代码可能是被覆写的方法,也可能是继承自基类的方法。
1.比如:A a=new B():引用变量a决定了调用的是A类中的方法和属性,而引用的的对象类型B确定了调用的方法,如果B覆盖了A类的方法,那么调用B中重写的方法;如果没有覆盖,调用A类中的方法;
2.方法调用的优先问题 :优先级由高到低依次为:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)