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

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

相关文章:

  • CommunityToolkit.Mvvm详解
  • LeRobot 项目部署运行逻辑(六)——visualize_dataset_html.py/visualize_dataset.py
  • Google的A2A和MCP什么关系
  • 低成本自动化改造技术锚点深度解析
  • 在js中大量接口调用并发批量请求处理器
  • @PostConstruct @PreDestroy
  • 流式渲染 Streaming SSR
  • 深入解析C++核心特性:运算符重载、继承、多态与抽象类
  • 第三节第二部分:Static修饰方法应用场景
  • 学习黑客搜索技巧
  • 解决应用程序在JAR包中运行时无法读取类路径下文件的问题
  • SSH(安全外壳协议)
  • 软件安全(二)优化shellcode
  • FreeRTOS如何实现100%的硬实时性?
  • 龙虎榜——20250509
  • 编译原理实验 之 语法分析程序自动生成工具Yacc实验
  • nvidia-smi 和 nvcc -V 作用分别是什么?
  • 算法设计与分析复习代码(hnust)
  • LVGL源码学习之渲染、更新过程(3)---绘制和刷写
  • 操作系统导论——第26章 并发:介绍
  • 河北邯郸一酒店婚宴发生火灾:众人惊险逃生,酒店未买保险
  • 黑灰产工作室为境外诈骗集团养号引流,冒充美女与男性裸聊后敲诈勒索
  • 秦洪看盘|重估叙事主题卷土重来,给A股注入新活力
  • 苹果Safari浏览器上的搜索量首次下降
  • 港理大研究揭示:塑胶废物潜藏微生物群落或引发生态危机
  • 保利发展前4个月销售额约876亿元,单月斥资128亿元获4个项目