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

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.xdnf.cn/news/5214.html

相关文章:

  • 跨平台编码规范文档
  • c++:标准模板库 STL(Standard Template Library)
  • 【Go底层】http标准库服务端实现原理
  • 设计模式-迭代器模式
  • 【MySQL数据库】--SQLyog创建数据库+python连接
  • 26考研——中央处理器_CPU 的功能和基本结构(5)
  • 机器学习-数据集划分和特征工程
  • Rust 中的 `PartialEq` 和 `Eq`:深入解析与应用
  • 数据库审计如何维护数据完整性:7 种工具和技术
  • 解决Win11下MySQL服务无法开机自启动问题
  • 数巅智能携手北京昇腾创新中心深耕行业大模型应用
  • 卷积神经网络实战(4)代码详解
  • 第二章 如何安装KEIL5和新建工程
  • 【论文解读】| ACL2024 | LANDeRMT:基于语言感知神经元路由的大模型机器翻译微调框架
  • 2025年数维杯C题完整求解思路讲解+代码分享
  • AI星智协脑:智能驱动的高效协作管理平台全解读
  • QT聊天项目DAY10
  • GoWeb开发(基础)
  • web 自动化之 selenium 元素四大操作三大切换等待
  • CSS transition过渡属性
  • NXP iMX8MP ARM 平台多屏幕克隆显示测试
  • 辛格迪客户案例 | 天台山制药仓储管理系统(WMS)项目
  • 普通IT的股票交易成长史--20250509晚复盘
  • 读写锁简介
  • Java——反射
  • DeepSeek致谢腾讯!
  • 热蛋白质组分析(TPP)技术的优劣势探讨
  • EPS三维测图软件
  • CDGP重点知识梳理(82个)
  • 20250509 相对论中的\*\*“无空间”并非真实意义上的虚无,而是时空结构尚未形成\*\*的状态。 仔细解释下这个