展开全部

在面向对象的程序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. Leetcode 769. Max Chunks To Make Sorted
  2. 使用C#格式化字符串
  3. shell和linux的认识
  4. linux空间管理,教你玩转Linux—磁盘管理
  5. PHP用单例模式实现一个数据库类
  6. 微信小程序保存图片fail Error: unable to verify the first certificate 微信小程序 当前系统代理不是安全代理,是信任问题解决
  7. github 公钥 私钥_windows下如何使用Git将本地项目上传到GitHub
  8. 链路两段不同网段怎么通信_为什么不同网段不能通信(转)
  9. CNN_TensorFlow图像分类代码
  10. Python检查字符串重叠部分并进行拼接
  11. Fedora和Red Hat Enterprise Linux实用指南(第6版)(套装上下册)火热上市!!!!
  12. 5.10 Ext JS Grid中 WidgetColumn(组件列)的使用
  13. essential c++源码_Goldenmask - 一键化保护你的 Python 源码
  14. php微信使用腾讯地图进行定位,微信定位+腾讯地图导航
  15. LeetCode 127. 单词接龙(广度优先遍历)
  16. Nginx配置优化解读
  17. [bzoj1468][poj1741]Tree_点分治
  18. Ubuntu安装最新版nodejs
  19. 日本家用电器技术标准及IEC对照介绍
  20. Java通过GeoLite2-City.mmdb进行IP信息查询地理定位和经纬度

热门文章

  1. Python 大数的质因数分解
  2. js获取当天的开始时间和结束时间
  3. [cf] Codeforces 817D Imbalanced Array 单调栈
  4. 将后台数据存放入Application域中
  5. #5 实现指定函数swap
  6. 正则 6位整数或小数点最多两位
  7. laocchang的Linux随学随记
  8. 操作系统 | 【五 输入/输出管理】知识点及例题
  9. JSP JAVAweb在线考试系统源码网上考试系统源码(ssm考试管理系统)
  10. 什么是RAID及创建RAID的方法