java的核心机制多态

茶盐耙 2012-03-02 01:23:48
小弟接触java不久励志要学号java,孰能帮我具体的解释多态的含义,让我更加明白
...全文
50 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
郭梧悠 2012-03-04
  • 打赏
  • 举报
回复
楼上精辟
qybao 2012-03-02
  • 打赏
  • 举报
回复
多态这个概念,不是三言两语就能说清楚,需要自己在程序设计上多多理解和领悟。
多态,故名思义就是“多种状态”,即同一个事物在不同的条件下可以有不同的表现形式。
比如说,蜘蛛侠,当他不穿上那身装备的时候,他就是一个普通人,而当他穿上那身蜘蛛装备的时候,就变得跟奥特曼一样,可以打怪兽了。

多态,在程序上分为了编译多态和运行多态。

编译多态就是所谓的方法(函数)重载,即同一个方法(函数),根据参数的不同,内部实现逻辑可以不同。
比如
方法1(int a), 方法1(long a)
那么方法1在编译的时候,就被编译为2个不同方法,只是调用者可以很方便地根据实际的参数来调用方法。
当我们定义 int a 的时候,调用 方法1(a)时,程序就会自动调用 方法1(int a),而当我们定义 long a 的时候,调用 方法1(a)时,程序就会自动调用 方法1(long a),这样我们可以事先根据要求来编写我们的代码,只需要定义不同类型的a就可以了。

运行多态就是所谓的动态绑定,即同一个变量,根据运行时的条件赋予不同的“值(对象)”而使它的属性和行为不同。
比如
生物 a = new 人();那么变量a就具有 人 的属性和行为,
当a在某个条件下散失人性,变为畜牲的时候,即 a = new 畜牲(),通过给a重新赋值为畜牲对象,那么a就不再是人了,而是具有了畜牲本能的动物了。

一般来说,运行多态是用得最广泛的,因为很多时候,很多条件是编译期无法决定的,需要在运行期根据当前的执行条件来决定赋予什么样的“身份(对象)”。而编译多态,只有在我们事先知道需求条件的时候才会采用。不过运行多态也是建立在编译多态的基础上,即运行多态通过子类重写父类方法而实现的,此时,子类和父类的同名方法就不叫重载了,而叫重写或覆盖。这样,程序上,我们可以只调用父类的方法,而根据实际给变量赋予的子类对象来决定程序的执行结果。
比如
方法1(生物 a) {
a.说话();
}
那么,当我们调用方法1的时候,如果传入的a是人,那么a.说话()就是人类语言,而如果传入的a是畜牲,那么a.说话()就不知道是什么嚎叫了。


50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧