首页 > 其他分享 >什么是多态?它和重载有什么区别?

什么是多态?它和重载有什么区别?

时间:2024-02-01 20:33:03浏览次数:26  
标签:makeSound 什么 多态 Animal 重载 方法 void

前言

大家好,我是chowley,相信学过编程语言的你,肯定听说过多态和重载两个概念,可多数人对他们之间的区别还是不太清晰,导致同时听到两个词一起出现时会大脑空白,今天我就来详细的介绍一下二者的区别,请准备好笔记,我们即刻出发!

多态

1. 定义

多态是指同一操作或方法在不同的对象上有不同的行为。它使得程序能够使用同样的接口来处理不同的对象,从而提高了代码的可扩展性和可维护性。

2. 类型

  • 编译时多态(静态多态): 在编译阶段确定调用的方法,这主要是通过方法的重载实现的。
  • 运行时多态(动态多态): 在运行时确定调用的方法,这主要是通过方法的覆写(重写)和虚函数的机制实现的。

3. 示例

class Animal {
    void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    void makeSound() {
        System.out.println("Dog barks");
    }
}

class Cat extends Animal {
    void makeSound() {
        System.out.println("Cat meows");
    }
}

public class PolymorphismExample {
    public static void main(String[] args) {
        Animal animal1 = new Dog();
        Animal animal2 = new Cat();

        animal1.makeSound(); // 输出:Dog barks
        animal2.makeSound(); // 输出:Cat meows
    }
}

在上述例子中,Animal 是一个基类,DogCat 是它的子类。通过多态,可以使用相同的方法 makeSound() 来处理不同类型的动物对象,实现了代码的可重用性和灵活性。

重载

1. 定义

重载是指在同一个类中,允许定义多个相同名字的方法,但这些方法的参数类型、个数或顺序必须不同。

2. 特点

  • 重载是一种编译时多态,编译器根据调用时提供的参数列表选择调用哪个方法。
  • 返回类型和访问修饰符不是重载的一部分。

3. 示例

public class OverloadingExample {
    void printInfo(int x) {
        System.out.println("Printing integer: " + x);
    }

    void printInfo(String str) {
        System.out.println("Printing string: " + str);
    }

    public static void main(String[] args) {
        OverloadingExample example = new OverloadingExample();
        example.printInfo(10);      // 输出:Printing integer: 10
        example.printInfo("Hello"); // 输出:Printing string: Hello
    }
}

在上述例子中,OverloadingExample 类中有两个名字相同的方法 printInfo,但它们的参数类型不同,一个是整数,一个是字符串。编译器在调用时会根据提供的参数选择正确的方法。

区别对比

  1. 类型: 多态涉及到运行对象的不同(动态),而重载是编译的不同(静态)。
  2. 实现方式: 多态通过继承和重写实现,而重载通过使用相同方法名但不同参数列表来实现。
  3. 调用方式: 多态通过对象的实际类型决定调用哪个方法,而重载通过编译器根据提供的参数列表选择调用哪个方法。

总结

在使用中,多态更多地涉及到类之间的继承和接口实现,而重载更多地用于同一个类中定义相同名字的方法时的场景。两者都有助于代码的可读性和可维护性,可以根据具体场景选择使用。

好了,以上就是本文的全部内容,如有问题欢迎留言讨论。

我是chowley,一个专注互联网技术和软件质量保障领域的博主,我们下次再见!

欢迎点赞、评论、收藏,it's important for me.

欢迎点赞、评论、收藏,it's important for me.

欢迎点赞、评论、收藏,it's important for me.

标签:makeSound,什么,多态,Animal,重载,方法,void
From: https://blog.51cto.com/chowley/9536183

相关文章

  • 什么是数据类型
    一、基本概念首先,数据类型应该拆开来理解,分别是数据和类型。我们先讲什么是数据,本质上是计算机内存中的0和1,由于计算机存储的基本单位是字节(byte),最小单位是位(bit),一个节字等于8位,这些都是计算机客观存在的概念。所以,byte在计算机占8个位,bit在计算机中占1个位,由于这两个家伙所占的存......
  • 提升网站性能的秘诀:为什么Nginx是高效服务器的代名词?
    在这个信息爆炸的时代,每当你在浏览器中输入一个网址,背后都有一个强大的服务器在默默地工作。而在这些服务器中,有一个名字你可能听说过无数次——Nginx。今天,就让我们一起探索这个神奇的工具。一、Nginx是什么Nginx(发音为“enginex”)是一个开源的高性能HTTP和反向代理服务器。它由......
  • 视频融合平台EasyCVR推流成功但平台显示不在线是什么原因?
    TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,包括对人、车、......
  • 如何远程登录云服务器?登录失败是什么原因?
    我用Linux云服务器,遇到了有关远程登录的一些问题,于是搜索了一些资料,整理了一篇文档,作为记录。如果你也遇到过相似的问题,欢迎一起探讨!一、Linux云服务器的远程登录远程登陆linux,使用的是ssh协议。windows平台下有putty,Xshell,SecureCRT等工具来远程连接linux服务器。1、putty是......
  • 单页应用(SPA)是什么?
    来源:https://zhuanlan.zhihu.com/p/648113861概述单页应用(SPA,SinglePageApplication)是一种网页应用或网站的设计模式,它在浏览器中仅加载一个HTML页面,并动态地更新该页面,而不是为每个新页面加载新的HTML。这使得应用能够与用户交互,无需重新加载整个页面。主要特点:动态重......
  • 方法重载和方法重写的区别
    方法重载和方法重写的区别1.什么是方法重载?方法重载(MethodOverloading)是指在同一个类中,可以定义多个方法具有相同的名称,但是参数列表不同。重载的方法可以有不同的参数类型、不同的参数个数,或者参数类型的顺序不同。方法重载的目的是提高代码的灵活性和可读性。方法重载的规则......
  • 神经网络优化篇:详解Batch Norm 为什么奏效?(Why does Batch Norm work?)
    BatchNorm为什么奏效?为什么Batch归一化会起作用呢?一个原因是,已经看到如何归一化输入特征值\(x\),使其均值为0,方差1,它又是怎样加速学习的,有一些从0到1而不是从1到1000的特征值,通过归一化所有的输入特征值\(x\),以获得类似范围的值,可以加速学习。所以Batch归一化起的作用的原因,直......
  • npm disturl 是做什么用的?
    npmdisturl是做什么用的?npmdisturl是一个配置项,用于设置npm下载tarball包(通常是Node.js的二进制文件或者一些带有平台相关编译内容的npm模块)时的基础URL。当npm需要从源代码构建依赖项,并且这些依赖项包含需要从特定位置下载的预编译二进制文件时,它会使用这个disturl来定位和......
  • 什么是二进制
    一、二进制的起源二进制(Binary)是由德国数学家和哲学家莱布尼茨首先提出来的。二进制是一种记数系统,只使用0和1两个数字来表示数,逢二进一。二进制在计算机科学、电子工程、数学等领域中得到了广泛的应用,因为可以很方便地表示和处理数字、图像、音频和视频等信息。当然,最重要的一个原......
  • [职场] 感觉统合训练师是什么及其求职简历
    求职简历是感觉统合训练师找工作的必备材料,应该清晰明了地介绍自己的个人信息、工作经验和能力特长,让招聘人员快速了解自己的专业背景和工作能力。本文会详细讲解这一方面,希望对你有所帮助。一、感觉统合训练师 感觉统合训练师是一种专门从事感觉统合训练工作的人员,主要通过设计各......