java多态 以及静态绑定 动态绑定积累
重载,英文名是overload,是指在一个类中定义了一个以上具有相同名称的方法,这些方法的参数个数、参数类型和顺序不能相同。返回类型可以相同,也可以不同。
重写,英文名是overrid,是指在继承情况下,子类中定义了与其基类中方法具有相同名称、相同返回类型和相同参数的方法,就叫做子类把基类的方法重写了。这是实现多态必须的步骤。
多态:多态是同一个行为具有多个不同表现形式或形态的能力。多态具备三大特征:子类继承父类,子类覆盖父类,父类指向子类。
程序绑定的概念:
绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定。
静态绑定:
在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。例如:C。
针对Java简单的可以理解为程序编译期的绑定;这里特别说明一点,java当中的方法只有final,static,private和构造方法是前期绑定。
动态绑定:
后期绑定:动态绑定是指编译器在编译阶段不知道要调用哪个方法,直到运行时根据具体对象的实际类型进行绑定。
若一种语言实现了后期绑定,同时必须提供一些机制,可在运行期间判断对象的类型,并分别调用适当的方法。也就是说,编译器此时依然不知道对象的类型,但方 法调用机制能自己去调查,找到正确的方法主体。不同的语言对后期绑定的实现方法是有所区别的。但我们至少可以这样认为:它们都要在对象中安插某些特殊类型 的信息。
方法重载有静态方法重载和普通方法重载。静态方法重载是静态绑定,方法调用是通过:类名.方法。普通方法重载是动态绑定,方法调用是通过:实例对象引用.方法。构造器能够重载,但是不能够被重写。
静态方法不能被重写,也就不具备多态性。重载只是一种语言特性,是一种语法规则,与多态无关,与面向对象也无关。
多态的好处:
使用多态可以解决项目中紧偶合的问题,提高程序的可扩展性.
java多态 以及静态绑定 动态绑定积累的更多相关文章
- Java : 多态表现:静态绑定与动态绑定(向上转型的运行机制)
本来想自己写写的,但是看到有人分析的可以说是很清晰了,故转过来. 原文地址:http://www.cnblogs.com/ygj0930/p/6554103.html 一:绑定 把一个方法与其所在的类 ...
- Java多态和动态绑定是如何实现的
最近深入学习java,看到了动态绑定和多态这一章节,但遗憾的是,大部分的相关文章都停留于表面文字的描述.不得已,最后google了几篇英文文章,在此总结下这个问题. 一.静态绑定和动态绑定的区别 在J ...
- Java多态之动态绑定
目录 Java多态之动态绑定 引用变量的类型 编译时类型 运行时类型 方法绑定 静态绑定 动态绑定 方法表 Java多态之动态绑定 上篇回顾:多态是面向对象程序设计非常重要的特性,它让程序拥有 更好的 ...
- java之多态(Polymorphic)、动态绑定(Dynamic Binding)、迟绑定(Late Binding)
今天,我们来说说java面向对象最核心的东西,多态.通过多态可以使我们的程序可复用性达到极致,这就是我们为什么要学多态的原因. “多态”(Polymorphic)也叫“动态绑定”(Dynamic Bi ...
- java 多态(动态绑定)
一.面向对象最核心的机制--动态绑定,也叫多态 1.1.通过下面的例子理解动态绑定,即多态 1 package javastudy.summary; 2 3 class Animal { 4 /** ...
- java多态实现原理
众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定.C++ 和 Java 作为当前最为流行的两种面向对象编程语言,其内部对于多态的支持 ...
- Java多态与C++中多态的实现
大牛的文章,值得拜读http://www.ibm.com/developerworks/cn/java/j-lo-polymorph/ 粘贴过来好多图片丢失了 /(ㄒoㄒ)/~~ 众所周知,多态是面向 ...
- 深入理解java多态没有烤山药的存在,java就不香了吗?
目录 1. 从吃烤山药重新认识多态 2. 多态前提条件[重点] 3. 多态的体现 4. 多态动态绑定与静态绑定 5. 多态特性的虚方法(virtual) 7. 向上转型 8. 向下转型 9. 向上向下 ...
- Java多态的6大特性|乐字节
大家好,我是乐字节的小乐,前几天讲完了Java继承,接下来我们会讲述Java多态. 以上就是本次学习的6大任务.我们依次来看. 一. Object类 Object类是所有Java类的根基类. 如果在类 ...
随机推荐
- UILabel 行间距设置
NSMutableAttributedString * attributedString1 = [[NSMutableAttributedString alloc] initWithString:te ...
- hdu1059(多重背包优化)
使用一种二进制的优化, 可以完美的解决这题,<背包九讲>中说的非常好 但是还有一种线性复杂的算法. 应该算是该题很巧妙的解法 ;i++) { ;l--) { ) continue; ;k& ...
- 【BZOJ4071】[Apio2015]巴邻旁之桥 Treap
[BZOJ4071][Apio2015]巴邻旁之桥 Description 一条东西走向的穆西河将巴邻旁市一分为二,分割成了区域 A 和区域 B. 每一块区域沿着河岸都建了恰好 1000000001 ...
- Java23种设计模式学习笔记【目录总贴】
创建型模式:关注对象的创建过程 1.单例模式:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 主要: 饿汉式(线程安全,调用效率高,但是不能延时加载) 懒汉式(线程安全,调用效率不高,但 ...
- multi-paradigm
w范式 https://developer.mozilla.org/en-US/docs/Web/JavaScript https://developer.mozilla.org/zh-CN/docs ...
- [已解决]centos6.4 php连接mysql和memcache提示权限不允许
昨天新安装了64位系统,所以就重新安装了一个centos的虚拟机,配置了一个测试环境,刚开始是页面打不开,这个确定是selinux规则没有设置好使用如下命令解决: chcon -R -h -t htt ...
- ChromeExtension 写一个extension
demo: https://github.com/rayshen/iExtensionDemo 使用: 1.打开扩展页面:chrome://extensions/ 2. 里面包含文件的结构是这样: 1 ...
- redisTemplate写哈希表遇到的坑
本文系原创,如有转载,请注明出处 在使用spring的redisTemplate进行redis哈希表的相关操作时,遇到了下面比较奇怪的情况: 1.删掉哈希表所属的key之后,重新get这个key的值, ...
- Python多线程、多进程和协程的实例讲解
线程.进程和协程是什么 线程.进程和协程的详细概念解释和原理剖析不是本文的重点,本文重点讲述在Python中怎样实际使用这三种东西 参考: 进程.线程.协程之概念理解 进程(Process)是计算机中 ...
- 【云安全与同态加密_调研分析(1)】国外云安全标准机构——By Me
在云计算领域,传统的信息安全管理标准如ITIL.ISO/IEC20000.ISO/IEC27001.27002.Cobit等被建议应用于云计算安全管理和控制框架的建立.此外,由于云计算本身区别于传统信 ...