Java多态总结

<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)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面 由于找工作的原因,最近几个月都没有更新博客了。。。这篇可能是今年最后一篇总结类的博文了,希望能够写的好点...
    niaoge2016阅读 13,053评论 1 52
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,242评论 18 399
  • 总是有人跑来跟我说,我想多读点书,你给我推荐几本呗。我说什么类型的?他说随便,好看就行。我…… 好看?我长得怪好看...
    我的老师是只猫阅读 4,316评论 5 10
  • 今天上午加拿大Stephen老师(下文简称S)带的动中觉知课程。他学习柔术,武术30年,也是修炼的老灵魂。仅仅3个...
    辰风王磊阅读 3,570评论 4 1
  • 不正经的简介:上海民国二十八年,由日本扶持的汪伪特工76号,暗中招募大量可造之才,蒋青绘误打误撞的加入了令人闻风丧...
    马胡写阅读 2,325评论 0 0