Java中多态性的实现方式
发布时间 - 2026-01-11 03:20:47 点击率:次什么是多态

- 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。
- 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
- 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
- 多态的作用:消除类型之间的耦合关系。
- 现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。
下面是多态存在的三个必要条件,要求大家做梦时都能背出来!
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
多态的好处:
1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。
一个小题目:
(一)相关类
class A ...{
public String show(D obj)...{
return ("A and D");
}
public String show(A obj)...{
return ("A and A");
}
}
class B extends A...{
public String show(B obj)...{
return ("B and B");
}
public String show(A obj)...{
return ("B and A");
}
}
class C extends B...{}
class D extends B...{}
(二)问题:以下输出结果是什么?
A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.println(a1.show(b)); ① System.out.println(a1.show(c)); ② System.out.println(a1.show(d)); ③ System.out.println(a2.show(b)); ④ System.out.println(a2.show(c)); ⑤ System.out.println(a2.show(d)); ⑥ System.out.println(b.show(b)); ⑦ System.out.println(b.show(c)); ⑧ System.out.println(b.show(d)); ⑨
(三)答案
① A and A ② A and A ③ A and D ④ B and A ⑤ B and A ⑥ A and D ⑦ B and B ⑧ B and B ⑨ A and D
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Java
# 多态性
# 详解java封装继承多态
# Java面向对象程序设计多态性示例
# 浅谈Java中的重载
# 重写
# 多态
# 静态绑定、动态绑定
# 关于Java三大特性之多态的总结
# java对象类型转换和多态性(实例讲解)
# 谈谈对Java多态性的一点理解
# 简单了解Java多态向上转型相关原理
# 子类
# 弹出
# 要有
# 必要条件
# 都是
# 这是
# 扩充性
# 基础上
# 都能
# 是指
# 最重要
# 三大
# 不胜枚举
# 很容易
# 这两个
# 如图
# 按下
# 所示
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
如何在阿里云完成域名注册与建站?
如何破解联通资金短缺导致的基站建设难题?
Laravel如何创建自定义Artisan命令?(代码示例)
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
Laravel用户密码怎么加密_Laravel Hash门面使用教程
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何用搬瓦工VPS快速搭建个人网站?
中山网站制作网页,中山新生登记系统登记流程?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
专业商城网站制作公司有哪些,pi商城官网是哪个?
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
再谈Python中的字符串与字符编码(推荐)
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
Bootstrap CSS布局之列表
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Laravel如何使用Livewire构建动态组件?(入门代码)
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
如何用花生壳三步快速搭建专属网站?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
Java解压缩zip - 解压缩多个文件或文件夹实例
北京企业网站设计制作公司,北京铁路集团官方网站?
网站建设要注意的标准 促进网站用户好感度!
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
如何在IIS中配置站点IP、端口及主机头?
php485函数参数是什么意思_php485各参数详细说明【介绍】
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
如何在IIS服务器上快速部署高效网站?
怎么用AI帮你为初创公司进行市场定位分析?
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
香港服务器选型指南:免备案配置与高效建站方案解析
高防服务器如何保障网站安全无虞?
Java遍历集合的三种方式
Android使用GridView实现日历的简单功能
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Laravel如何优化应用性能?(缓存和优化命令)
北京网站制作公司哪家好一点,北京租房网站有哪些?

