当前位置: 首页 > article >正文

35-Java 多态

Java 多态在本教程中我们将通过示例学习多态不同类型的多态以及如何在Java中实现它们。多态是面向对象编程的重要概念。它只是意味着不止一种形式。也就是说同一实体方法运算符或对象在不同情况下的行为会有所不同。例如Java中的运算符用于执行两个特定功能。与数字整数和浮点数一起使用时将执行加法运算。int a 5; int b 6; int sum a b; // sum 11当我们将运算符与字符串一起使用时它将执行字符串连接。例如String firstName abc ; String lastName xyz; name firstName lastName; // name abc xyz多态性的类型在Java中多态可以分为两种类型运行时多态编译时多态运行时多态在Java中可以通过方法重写来实现运行时多态。假设在父类及其子类中创建了相同的方法。在这种情况下将要调用的方法取决于用于调用该方法的对象。例如示例1方法重写abstract class Animal { public abstract void makeSound(); } class Dog extends Animal { Override public void makeSound() { System.out.println(Bark bark..); } } class Cat extends Animal { Override public void makeSound() { System.out.println(Meow meow..); } } class Main { public static void main(String[] args) { Dog d1 new Dog(); d1.makeSound(); Cat c1 new Cat(); c1.makeSound(); } }输出Bark bark… Meow-meow...在上面的示例中该方法makeSound()在两个不同的类中具有不同的实现。当我们运行程序时表达式d1.makeSound()将调用Dog类的方法。这是因为d1是Dog类的对象。表达式c1.makeSound()将调用Cat类的方法。这是因为c1是Cat类的对象。在程序执行期间确定将要调用的方法。因此方法重写是运行时多态。编译时多态可以通过Java中的方法重载和运算符重载来实现编译时多态。方法重载在Java类中如果参数不同则可以使用相同的名称创建方法。例如void func() { ... } void func(int a) { ... } float func(double a) { ... } float func(int a, float b) { ... }这在Java中称为方法重载。让我们以方法重载为例。示例3方法重载class Demo { public void displayPattern(){ for(int i 0; i 10; i) { System.out.print(*); } } public void displayPattern(char symbol) { for(int i 0; i 10; i) { System.out.print(symbol); } } } class Main { public static void main(String[] args) { Demo d1 new Demo(); d1.displayPattern(); System.out.println(\n); d1.displayPattern(#); } }输出********** ##########在上面的程序中displayPattern()方法已重载。如果我们在不传递任何参数的情况下调用该方法则会创建 * 字符的图案。如果我们通过将字符作为参数传递来调用该方法则会创建 # 字符的图案。Java方法重载 VS 方法重写在方法重写的情况下方法应该在不同的类中。然而在方法重载的情况下方法应该在同一个类中。方法重写在运行时执行而方法重载在编译时执行。运算符重载Java中的某些运算符对不同的操作数的行为有所不同。例如运算符被重载以执行数字加法和字符串连接。、|和!为逻辑和按位操作重载。让我们看看运算符如何在Java中重载。Java中的运算符用于执行两个特定功能。与数字整数和浮点数一起使用时将执行加法运算。例如int a 5; int b 6; int sum a b; // sum 11当我们将运算符与字符串一起使用时它将执行字符串连接。例如String firstName abc ; String lastName xyz; name firstName lastName; // name abc xyz在像C 这样的语言中我们可以定义运算符以对不同的操作数进行不同的处理。但是Java不支持用户定义的运算符重载。为什么要多态多态允许我们创建一致的代码。例如假设我们需要绘制一个圆和一个正方形。为此我们可以创建一个Polygon类Circle和square从中继承两个子类。 在这种情况下有必要在这两个子类中创建一个具有相同名称render()的方法而不是创建具有不同名称的方法。在我们的方法重载示例中我们使用相同的方法名称displayPattern()来显示两个不同的图案以保持一致性。Java中的print()方法也是多态性(方法重载)的一个实例。同样的方法用于打印不同类型的值如char、int、String等。我们还可以使用相同的方法一次打印多个值。多态变量在Java中对象变量实例变量表示多态变量的行为。这是因为类的对象变量可以引用其类的对象及其子类的对象。例如class Animal { public void displayInfo() { System.out.println(I am an animal.); } } class Dog extends Animal { Override public void displayInfo() { System.out.println(I am a dog.); } } class Main { public static void main(String[] args) { //声明Animal类的对象变量a1 Animal a1; //创建Animal类的对象 a1 new Animal(); a1.displayInfo(); //dog类的对象创建 a1 new Dog(); a1.displayInfo(); } }输出I am an animal. I am a dog.在上面的示例中我们创建了Animal类的对象变量a1。在这里a1是一个多态变量。这是因为在语句中 a1 new Animal()a1引用Animal类的对象。在语句中 a1 new Dog()a1引用Dog类的对象。这是Java中的向上转型示例。 福利时间如果你正在备战面试或者想要学习其他知识给大家推荐一个宝藏知识库作者整理了一些列 Java 程序员需要掌握的核心知识有需要的自取不谢。知识库地址https://farerboy.com/

相关文章:

35-Java 多态

Java 多态 在本教程中,我们将通过示例学习多态,不同类型的多态以及如何在Java中实现它们。 多态是面向对象编程的重要概念。它只是意味着不止一种形式。也就是说,同一实体(方法,运算符或对象)在不同情况下…...

object-fit-images 的未来发展:从 polyfill 到现代 CSS 的平滑过渡

object-fit-images 的未来发展:从 polyfill 到现代 CSS 的平滑过渡 【免费下载链接】object-fit-images 🗻 Polyfill object-fit/object-position on : IE9, IE10, IE11, Edge, Safari, ... 项目地址: https://gitcode.com/gh_mirrors/ob/object-fit-i…...

题解:AtCoder AT_awc0043_c Imbalance of the Organization

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...

终极游戏本性能控制:OmenSuperHub完全指南

终极游戏本性能控制:OmenSuperHub完全指南 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 想要彻底释放你的惠普OMEN游戏本隐藏性能吗&#xf…...

ComfyUI-FramePackWrapper深度解析:节点化视频生成架构与3大性能优化策略

ComfyUI-FramePackWrapper深度解析:节点化视频生成架构与3大性能优化策略 【免费下载链接】ComfyUI-FramePackWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-FramePackWrapper ComfyUI-FramePackWrapper作为lllyasviel FramePack项目的Comf…...

Excel多文件批量查询完整指南:如何10分钟完成全天数据查找工作

Excel多文件批量查询完整指南:如何10分钟完成全天数据查找工作 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 还在为海量Excel文件中的查找任务而头疼吗?QueryExcel——这款免…...

题解:AtCoder AT_awc0036_a Library Loan Management

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...

不同档位的降 AI 速度需求——30 分钟到 4 小时差在哪?

不同档位的降 AI 速度需求——30 分钟到 4 小时差在哪? 「我答辩还有 1 小时——能压住 AI 率吗?」 取决于你的档位。30% 起点 1 小时够;60% 起点不够;80% 起点远远不够。这一篇按 4 档拆解时间组成。 4 档时间需求总览 档位AI…...

如何用BilibiliDown实现高效B站视频批量下载:5分钟完全指南

如何用BilibiliDown实现高效B站视频批量下载:5分钟完全指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirr…...

让小爱音箱秒变AI助手:MiGPT项目完整配置指南

让小爱音箱秒变AI助手:MiGPT项目完整配置指南 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 你是否曾对小爱音箱的"人工智障&q…...

object-fit-images 核心原理深度解析:从背景图到现代 CSS 的优雅降级

object-fit-images 核心原理深度解析:从背景图到现代 CSS 的优雅降级 【免费下载链接】object-fit-images 🗻 Polyfill object-fit/object-position on : IE9, IE10, IE11, Edge, Safari, ... 项目地址: https://gitcode.com/gh_mirrors/ob/object-fit…...

不同档位 AI 率对应的降 AI 工具单价——3.2 元到 8 元怎么选。

不同档位 AI 率对应的降 AI 工具单价——3.2 元到 8 元怎么选。 3.2 元 vs 4.8 元 vs 6 元 vs 8 元——降 AI 工具单价拉开近一倍。怎么选? 取决于你的档位。这一篇用 4 档 AI 率对应 4 档单价的速查表给完整决策依据。 4 档 AI 率 vs 4 档单价对应表 AI 率档位推…...

go-critic 代码风格检查:如何遵循 Go 最佳实践和编码规范

go-critic 代码风格检查:如何遵循 Go 最佳实践和编码规范 【免费下载链接】go-critic The most opinionated Go source code linter for code audit. 项目地址: https://gitcode.com/gh_mirrors/go/go-critic go-critic 是一款高度 opinionated 的 Go 源代码…...

别再只会用下载器了!手把手教你用Python解析.torrent文件,自己动手生成磁力链接

从.torrent到磁力链接:Python实战解析与转换指南 在数字资源共享领域,BitTorrent协议始终保持着独特的生命力。许多用户虽然熟悉如何使用客户端软件下载种子文件,却对背后的技术原理知之甚少。本文将带您深入.torrent文件内部,用P…...

Asahi Linux系统架构:深入理解Apple Silicon子系统工作原理

Asahi Linux系统架构:深入理解Apple Silicon子系统工作原理 【免费下载链接】docs Asahi Linux documentation 项目地址: https://gitcode.com/gh_mirrors/docs157/docs Asahi Linux是专为Apple Silicon芯片设计的开源操作系统项目,致力于在Apple…...

Unmanic入门指南:5分钟快速搭建你的首个媒体库优化系统

Unmanic入门指南:5分钟快速搭建你的首个媒体库优化系统 【免费下载链接】unmanic Unmanic - Library Optimiser 项目地址: https://gitcode.com/gh_mirrors/un/unmanic Unmanic是一款强大的媒体库优化工具,能帮助你自动处理和优化媒体文件&#x…...

Cadence IC5141保姆级教程:从反相器到与非门,手把手教你搞定CMOS数字电路仿真

Cadence IC5141实战指南:从反相器到逻辑门的CMOS设计全流程解析 在半导体设计领域,掌握Cadence Virtuoso IC5141就像获得了一把打开数字电路世界的金钥匙。不同于教科书上的理论推导,真实的CMOS设计过程充满了参数调优的艺术和仿真分析的技巧…...

如何快速掌握Label Studio前端测试自动化:Jest与React Testing Library完整指南

如何快速掌握Label Studio前端测试自动化:Jest与React Testing Library完整指南 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trendin…...

5步掌握游戏帧率提升秘诀:DLSS Swapper智能图形增强文件管理全攻略

5步掌握游戏帧率提升秘诀:DLSS Swapper智能图形增强文件管理全攻略 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为游戏玩家设计的智能图形增强文件管理工具,它让您能够轻…...

终极指南:Label Studio前端状态管理进阶——从MobX到异步流程优化

终极指南:Label Studio前端状态管理进阶——从MobX到异步流程优化 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/label-st…...

深度解析Zotero SciPDF插件的高性能学术文献自动下载架构设计与实战应用

深度解析Zotero SciPDF插件的高性能学术文献自动下载架构设计与实战应用 【免费下载链接】zotero-scipdf Download PDF from Sci-Hub automatically For Zotero7 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-scipdf Zotero SciPDF是一款专为Zotero 7设计的高性…...

UVa 11853 Paintball

题目描述 你正在一个 100010001000 \times 100010001000 的正方形场地上玩彩弹游戏。场地上有若干对手躲在树后,每个对手位于 (x,y)(x, y)(x,y) 位置,并且可以朝任意方向发射彩弹,攻击范围为 rrr。如果你在移动过程中进入任何对手的攻击范围&…...

中文BERT全词掩码技术终极指南:10个关键要点让你彻底掌握AI理解中文的核心奥秘

中文BERT全词掩码技术终极指南:10个关键要点让你彻底掌握AI理解中文的核心奥秘 【免费下载链接】Chinese-BERT-wwm Pre-Training with Whole Word Masking for Chinese BERT(中文BERT-wwm系列模型) 项目地址: https://gitcode.com/gh_mirro…...

迷宫小车竞赛避坑指南:如何用OPENMV的ROI优化和MSP432的PID让你的小车跑得更稳更快

迷宫小车竞赛性能调优实战:从ROI策略到PID闭环的进阶技巧 第一次参加迷宫小车比赛时,我的团队在实验室测试表现优异的小车,到了正式赛场却频频误判T型路口。直到比赛结束前两小时,我们才发现OPENMV的ROI区域设置没有考虑赛场顶光的…...

cookie-parser 实战教程:构建安全的用户会话管理系统

cookie-parser 实战教程:构建安全的用户会话管理系统 【免费下载链接】cookie-parser Parse HTTP request cookies 项目地址: https://gitcode.com/gh_mirrors/co/cookie-parser cookie-parser 是一款轻量级的 HTTP 请求 cookie 解析中间件,能够帮…...

别再踩坑了!uni-app微信小程序头像昵称获取最新方案(chooseAvatar实战避坑)

uni-app微信小程序头像昵称获取全攻略:从旧接口迁移到chooseAvatar的最佳实践 微信小程序生态的持续演进给开发者带来了不少挑战,尤其是用户信息获取规则的调整。去年10月微信团队宣布废弃wx.getUserProfile接口后,许多uni-app开发者陷入了适…...

RELIC:融合记忆增强与实时交互的视频理解系统

1. 项目概述:当视频理解遇上记忆增强在计算机视觉领域,让AI系统像人类一样理解动态视频内容一直是极具挑战性的方向。传统视频分析模型往往存在两个致命缺陷:一是只能被动处理固定长度的视频片段,缺乏持续学习能力;二是…...

vue-data-ui响应式设计完全指南:让图表在任何设备上完美显示

vue-data-ui响应式设计完全指南:让图表在任何设备上完美显示 【免费下载链接】vue-data-ui An open source user-empowering data visualization Vue 3 components library for eloquent data storytelling 项目地址: https://gitcode.com/gh_mirrors/vu/vue-data…...

real-anime-z参数详解:随机种子42为何成为动漫生成稳定性的黄金基准

real-anime-z参数详解:随机种子42为何成为动漫生成稳定性的黄金基准 1. real-anime-z镜像概述 real-anime-z是一款专为二次元创作优化的文生图镜像,能够快速生成高质量的动漫风格图像。这个开箱即用的解决方案特别适合: 角色设计&#xff1…...

从一颗芯片到一辆车:拆解车载MCU如何控制你的爱车(以NXP S32K为例)

从一颗芯片到一辆车:拆解车载MCU如何控制你的爱车(以NXP S32K为例) 在汽车电子系统的复杂网络中,车载MCU扮演着如同人体神经中枢的角色。想象一下,当你轻触车窗按钮时,一个微小的芯片如何在毫秒间完成从信号…...