我理解的java多态
来源:互联网 发布:我国机电产品出口数据 编辑:程序博客网 时间:2024/06/17 18:30
java多态可以改善nxin代码的组织结构和可读性;有利于创建可扩展的程序
java的多态是建立在后期绑定技术(运行时绑定)的基础上的。《java编程思想》中有提到这种技术的基本原理是在对象中安置某种“类型信息”,而java除了少量的前期绑定外基本上都是后期绑定。
假设有一个基类CShape,它有一个抽象方法draw() ,Circle类从CShape继承而来并实现了自己的draw()。通常可以见到 以下写法:
CShape s=new Circle();
为什么可以这么做?
可以认为在子类Circle的实例中隐藏着一个CShape实例。因此这个实例s其实有两种类型信息——CShape和Circle, 因此用父类的引用去接收子类是可以的。s的内存模型可以简单的理解如下:
如果调用s.draw()方法。因为s是CShape类型的 引用。 因此调用应该是CShape.draw()。但是。。。与C++类似,由于声明了这个draw()是abstract,因此这个基类CShape中还维护着一个类似虚函数表的东西,经过往下查找,与s中存放的“类型信息”相匹配的那个draw()找到,进而被正确调用。
以上理解并不一定是具体实现,仅供理解时参考。
0 0
- java多态 我的理解
- 我理解的java多态
- 我所理解的JAVA多态
- java初始化之我的理解
- 我对java操作数据库的理解
- 我之理解Java的四个基本特征
- java中的字符流--我的理解
- java.util.concurrent我的理解
- 我理解java的多态
- 我对java中enum的理解
- 统观我的Java理解程度
- 我对Java内存模型的理解
- 我所理解Java的继承
- 我对java和jsp的理解
- 我所理解的Java访问权限
- 谈谈我对Java中泛型的理解
- 我理解的JAVA学习流程
- 我对java泛型的理解
- Python判断变量类型
- 表达式中的一些常用模式.
- 使用git客户端第一次git clone github.com代码的方法
- Linux如何实现开机启动程序详解
- sevlet 使用url请求没有反应
- 我理解的java多态
- PHP csv大量数据导出分割处理
- 逻辑地址、线性地址、物理地址和虚拟地址
- ognl概念和原理详解
- 用myeclipse2015 stable 2.0新建jsp后,无法使用jstl/core标签
- shell版俄罗斯方块最终源码
- php A*从迷宫迈向光明
- onblur 事件
- 折半查找