展开全部

在面向对象的程序JAVA中,多态性的定义是:

同一操作作用于不同的32313133353236313431303231363533e78988e69d8331333366306461类的实例,将产生不同的执行结果。

对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可能导致完全不同的行为,这种现象称为多态性。

多态性就是多种表现形式,即用"一个对外接口,多个内在实现方法"表示。

多态性包含编译时的多态性、运行时的多态性两大类。 即:多态性也分静态多态性和动态多态性两种。

静态多态性

静态多态性是指定义在一个类或一个函数中的同名函数,它们根据参数表(类型以及个数)区别语义,并通过静态联编实现。

动态多态性

动态多态性是指定义在一个类层次的不同类中的重载函数,它们一般具有相同的函数,因此要根据指针指向的对象所在类来区别语义,它通过动态联编实现。

在用户不作任何干预的环境下,类的成员函数的行为能根据调用它的对象类型自动作出适应性调整,而且调整是发生在程序运行时,这就是程序的动态多态性。举例子说明一下:

扩展资料:

1.多态存在的三个必要条件:

(1)要有继承;

(2)要有重写;

(3)父类引用指向子类对象。

2.多态的好处:

(1)可替换性(substitutability):多态对已存在代码具有可替换性,例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。

(2)可扩充性(extensibility):多态对代码具有可扩充性,增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。

(3)接口性(interface-ability):多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。

(4)灵活性(flexibility):它在应用中体现了灵活多样的操作,提高了使用效率。

(5)简化性(simplicity):多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

参考资料来源:

java的多态性_java中多态性什么意思?相关推荐

  1. java final 函数_JAVA中Final的用法

    1.         修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改.如java.lang.Math类中的PI和E是f ...

  2. java 非法重载_JAVA中重写和重载区别

    重写和重载区别 重写方法的规则如下: 参数列表:必须与被重写方法的参数列表完全匹配. 返回类型:必须与超类中被重写的方法中声明的返回类型或子类型完全相同 访问级别:一定不能比被重写方法强,可以比被重写 ...

  3. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  4. java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信

    你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...

  5. java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园

    1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...

  6. java 序列化实例_Java中的序列化与反序列化实例

    创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...

  7. java 数据类型分为_JAVA中分为基本数据类型及引用数据类型

    byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...

  8. java 代码锁_Java中的Lock锁

    Lock锁介绍: 在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景.高效的性能,java还提供了Lock接口及其实现类ReentrantLock和 ...

  9. java wait 参数_java中wait()和join()方法的区别是什么

    java中wait()和join()方法的区别是:存在不同的java包中:wait()方法用于线程间通信,它所施加的等待状态的线程可以被启动:join()方法用于在多个线程之间添加排序,它所施加的等待 ...

最新文章

  1. 聊一聊我在 B站 上自学编程的经历吧
  2. 眉目传情之匠心独运的kfifo【转】
  3. git/github 生成密钥
  4. python用中文怎么说-python如何设置中文界面
  5. 树莓派学习笔记(7):利用bypy实现树莓派NAS同步百度云
  6. hdu 3697 贪心
  7. Laravel 某个字段更新失败的原因
  8. 最大子序列求和_算法——求最大子段和
  9. android http请求缓存,Android Http请求和响应使用协议缓冲区
  10. 微小宝公众号排行榜_榜单 广东省技工院校微信公众号排行榜(第51期)
  11. 1.C#项目Java化注意事项
  12. babel工作笔记001---babel从入门到入门
  13. 货物与产品的区别_商品与一般物品和其他产品有什么区别?
  14. 解决webstorm out of memory内存不足问题
  15. C# 根据EXCEL自动生成oracle建表语句
  16. 计算机算法实验报告二——递归
  17. codeblocks安装包和主题及中文语言包百度云下载
  18. Ordinal Regression with Multiple Output CNN for Age Estimation-(系列一_年龄估计)
  19. 7款非常棒的flash游戏菜单启动界面
  20. 进化计算原理和实现(遗传算法)

热门文章

  1. CVE-2016-0165 分析利用POC
  2. 实战| 一行命令对你的图像视频进行风格迁移
  3. 从浏览器输入http://www.baidu.com,到看到百度主页的过程中到底发生了什么?
  4. windows server 2003 如何修改登录密码
  5. 到货单计算主辅计量工具类 包含价格计算
  6. git克隆代码报错remote: HTTP Basic: Access denied fatal: Authentication failed for的解决方案之一
  7. SSM简单项目代码分析
  8. mysql计算两个字段时间差
  9. 复制360doc网页中的内容
  10. 100个Shell脚本经典案例解析