java-----------------多态

多态,当前指的是 java 所呈现出来的一个对象
 

多态


 
定义
 


多态是指同一个行为具有多个不同表现形式或形态的能力。在面向对象编程中,多态通过方法重载和方法重写来实现。

强弱类型语言

 javascript 或者python 是弱类型语言

C 语言,或者 C++也好,是强类型语言
 

通俗来讲,强类型语言是指当前的数据类型是确定好了的,每次赋值必须要用表示该类型的特定字符,否则报错,反之则为弱类型语言


java /C /C++ 等,当中的数据类型,它决定数据在内存当中的存储形式。
对于 python /javascript等,没有什么数据类型,统一用一个变量(如var)代替所有的数据类型

PS:继承的本质是代码的复用,而代码复用的实现方式就是能够调用父类的变量和方法


方法重载
 
概念:在同一个类中,允许存在多个同名方法,但这些方法的参数列表不同(参数个数、类型或顺序不同)。
 
public class Calculator {
    public int add(int num1, int num2) {
        return num1 + num2;
    }

    public double add(double num1, double num2) {
        return num1 + num2;
    }
}
 
 
在上述代码中, Calculator 类有两个 add 方法,通过参数类型的不同来区分。
 
方法重写
 
概念:子类重写父类中已有的方法。要求方法名、参数列表和返回值类型必须与父类中被重写的方法一致(在Java中,返回值类型可以是父类返回值类型的子类,这是协变返回类型)。
 
class Animal {
    public void makeSound() {
        System.out.println("动物xxxxxx");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪");
    }
}
 
 
这里 Dog 类重写了 Animal 类的 makeSound 方法。

如下图:

由图可知,B继承自A,C、D继承自B,从Test的main方法可推断

1、"A and A"

      a1这个变量引用的是A类型,b引用的是B类型,B继承自A,A中有两个方法,分别要输入参数A和D,B继承于A,此时B的类型向上转型为A,则此时a1.Show(b)即为A.Show(A),结果为A and A

2、"A and A"

     同理1,C继承自B,向上转型至B,但没有以B为参数的方法则再次向上转型为A

3、"A and D"

     A中就把本来就含有以D为参数的方法,则不会转型,此时会直接调用输出A and D

4、"B and A"

     a2引用B方法,B继承自A,所以理论上来说a2可以同时调用AB中的4个方法,但是B会对A中的Show(A)方法进行重写。所以b调用的B方法由B向上转型为A后,输出的结果为B and A

5、"B and A"

   同理1,C继承自B,向上转型至B,但没有以B为参数的方法则再次向上转型为A,B对A中的Show(A)方法进行重写,输出B and A

6、"A and D"

   同理3,对Show(A)改写但对Show(D)无影响,输出A and D

7、"B and A"

    同理4

9、”A and D“

    同理3,对Show(A)改写但对Show(D)无影响,输出A and D

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 23种设计模式 - 结构型模式7种

Java 23种设计模式 - 结构型模式7种 1 适配器模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 优点 将目标类和适配者类解耦增加了类的透明性和复用性,将具体的实现封…

Git clone时出现SSL certificate problem unable to get local issuer certificate

正确解决方法 git config --global http.sslVerify false错误解决方法:(主要是看错了嘿嘿,但是如果是 OpenSSL SSL_read: Connection was reset, errno 10054 Failed to connect to github.com port 443: Timed out 原…

DevExpressWinForms-AlertControl-使用教程

文章目录 AlertControl-使用教程一、将 AlertControl 添加到 Form二、编辑 AlertControl 的 HtmlTemplateHTML Template Editor介绍编辑HTML Template 三、使用AlertControl弹出AlertAlert中的按钮事件获取 Alert 标题等信息向Alert传递参数 总结源码 AlertControl-使用教程 一…

制作项目进度表常用的 8 款项目管理工具分享

在数字化管理和高效协作的今天,项目进度表软件已经成为企业管理不可或缺的工具。无论是中小型企业还是大型机构,都需要通过精准的项目计划和实时的进度跟踪来确保业务目标的顺利达成。这篇文章将聚焦项目进度表软件,深入探讨市场上8款主流产品…

SecureCRT网络穿透/代理

场景 公司的办公VPN软件只有Windows系统版本,没有Macos系统版本,而日常开发过程中需要先登录VPN后,然后才能登录应用服务器。 目的:Macos系统在使用SecureCRT时,登录服务器,需要走Parallels Desktop进行网络…

【计算机网络-传输层】传输层协议-TCP核心机制与可靠性保障

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 上篇文章:传输层协议-UDP 下篇文章: 网络层 我们的讲解顺序是&…

OpenMagnetic的介绍与使用

1. Background OM(OpenMagnetic)OpenMagnetics,能涵盖气隙磁阻,磁导率,铁芯损耗、磁滞损耗、涡流电流损耗、涡流效应、漏感、温升的计算与仿真[1]。 铁损计算模型:改进的Steinmetz方程[2] 气隙阻抗计算&…

【JVM】从零开始深度解析JVM

本篇博客给大家带来的是JVM的知识点, 重点在类加载和垃圾回收机制上. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 …

字符串---Spring字符串基本处理

一、String类的特性 不可变性 String对象一旦创建,内容不可更改,任何修改操作都会生成新对象。字符串常量池 字符串字面量(如"abc")直接存储在常量池中,重复字面量共享同一内存地址。创建方式 虽然都是字符…

26考研——中央处理器_CPU 的功能和基本结构(5)

408答疑 文章目录 一、CPU 的功能和基本结构CPU 的功能CPU 的基本结构运算器控制器 CPU 的寄存器运算器中的寄存器控制器中的寄存器 八、参考资料鲍鱼科技课件26王道考研书 九、总结 一、CPU 的功能和基本结构 CPU 的功能 中央处理器(CPU)由运算器和控…

传统数据展示 vs 可视化:谁更打动人心?

数据,每天都在我们身边流动:从你手机里的健康步数,到企业财报中的营收增长,再到国家发布的经济指标。但问题是——你怎么“看”这些数据? 过去,我们习惯用表格、文字和报告来展示数据,这种方式…

Base64 编码原理详细解析

Base64 编码是一种常见的数据编码方式,它将二进制数据转化为可打印的 ASCII 字符串。Base64 编码广泛应用于电子邮件、URL 编码、HTTP 请求和响应中等场景。它的核心作用是让二进制数据可以通过仅支持文本的协议或媒介进行传输。本文将更深入地探讨 Base64 编码的原…

一周学会Pandas2 Python数据处理与分析-Pandas2数据排序操作

锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas 2提供了多种灵活的数据排序方法,主要针对 DataFrame 和 Series 对象。 1. 按值排序:s…

计算机二级(C语言)已过

非线性结构:树、图 链表和队列的结构特性不一样,链表可以在任何位置插入、删除,而队列只能在队尾入队、队头出队 对长度为n的线性表排序、在最坏情况下时间复杂度,二分查找为O(log2n),顺序查找为O(n),哈希查…

Windows Server 2025开启GPU分区(GPU-P)部署DoraCloud云桌面

本文描述在ShareStation工作站虚拟化方案的部署过程。 将服务器上部署 Windows Server、DoraCloud,并创建带有vGPU的虚拟桌面。 GPU分区技术介绍 GPU-P(GPU Partitioning) 是微软在 Windows 虚拟化平台(如 Hyper-V)中…

Android RxJava框架分析:它的执行流程是如何的?它的线程是如何切换的?如何自定义RxJava操作符?

目录 RxJava是什么?为什么使用。RxJava是如何使用的呢?RxJava如何和Retrofit一起使用。RxJava源码分析。 (1)他执行流程是如何的。(2)map(3)线程的切换。 如何自定义RxJava操作符…

QT的初始代码解读及其布局和弹簧

this指的是真正的当前正在显示的窗口 main函数: Widget w是生成了一个主窗口,QT Designer是在这个主窗口里塞组件 w.show()用来展示这个主窗口 头文件: namespace Ui{class Widget;}中的class Widget和下面的class Widget不是一个东西 Ui…

什么是AI写作

一、AI写作简介 AI 写作正在成为未来 10 年最炙手可热的超级技能。已经有越来越多的人通过 AI 写作,在自媒体、公文写作、商业策划等领域实现了提效,甚至产生了变现收益。 掌握 AI 写作技能,不仅能提高个人生产力,还可能在未来的 …

13.原生测试框架Unittest解决用例组织问题 与测试套件的使用

13. 原生测试框架Unittest解决用例组织问题 与测试套件的使用 一、测试架构核心组件解析 1.1 系统组成模块 #mermaid-svg-bYie0B3MLRp0HL4g {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bYie0B3MLRp0HL4g .erro…

UE5 脚部贴地不穿过地板方案

UE自带的IK RIG和ControlRig技术 【UE5】角色脚部IK——如何让脚贴在不同斜度的地面(设置脚的旋转)_哔哩哔哩_bilibili 实验后这个还是有一部分问题,首先只能保证高度不能穿过,但是脚步旋转还是会导致穿模 IK前,整个模型在斜坡上会浮空 参考制作:https://www.youtube.com/w…