首页 > 其他分享 >解释方法重载和方法重写的区别。然后,给出一个简单的递归方法实例。

解释方法重载和方法重写的区别。然后,给出一个简单的递归方法实例。

时间:2024-07-15 22:27:38浏览次数:10  
标签:方法 阶乘 参数 重载 重写 public

方法重载(Overloading)与方法重写(Overriding)的区别

在Java编程中,方法重载和方法重写是两个非常重要的概念,它们分别体现了面向对象编程中的多态性(Polymorphism)的不同方面,但两者有着本质的区别。

方法重载(Overloading)

概念:方法重载指的是在同一个类中,允许有多个同名的方法,但这些方法的参数列表必须不同(参数的数量、类型或顺序不同)。

Java编译器根据传入参数的不同来决定调用哪个方法。这就是所谓的编译时多态(Static Polymorphism)或方法的静态绑定。

特点

  • 发生在同一个类中。
  • 方法名相同。
  • 参数列表不同。
  • 返回类型不影响重载(但建议保持一致以增强代码可读性)。
  • 用于提供不同的实现来处理不同类型的输入数据。

示例

1public class OverloadingExample {
2    public void printMessage() {
3        System.out.println("无参数的方法");
4    }
5
6    public void printMessage(String message) {
7        System.out.println("带一个字符串参数的方法: " + message);
8    }
9
10    public void printMessage(int number) {
11        System.out.println("带一个整数参数的方法: " + number);
12    }
13}
方法重写(Overriding)

概念:方法重写发生在继承关系中,子类可以重写(Override)父类中的某个方法,提供自己的实现。

重写方法的签名必须与父类中的被重写方法完全相同(方法名、参数列表和返回类型),但访问权限不能比父类中该方法的访问权限更严格。

方法重写是运行时多态(Dynamic Polymorphism)的一个典型应用,具体调用哪个方法是在运行时根据对象的实际类型决定的,即动态绑定。

特点

  • 发生在继承关系中。
  • 子类重写父类的方法。
  • 方法名、参数列表和返回类型必须与父类中的方法完全相同。
  • 访问权限至少与父类方法一样宽松。
  • 可以改变方法的行为或实现细节。

示例

1class Animal {
2    public void makeSound() {
3        System.out.println("动物发出声音");
4    }
5}
6
7class Dog extends Animal {
8    @Override
9    public void makeSound() {
10        System.out.println("狗吠叫");
11    }
12}

递归方法实例:计算阶乘

递归是编程中的一种重要技巧,指的是一个方法在其内部直接或间接地调用自身来解决问题。下面是一个使用递归计算阶乘的简单示例:

阶乘定义:n的阶乘(记作n!)是所有小于及等于n的正整数的乘积。数学上定义0! = 1,1! = 1,对于n > 1,n! = n * (n-1)!。

递归实现

1public class Factorial {
2
3    // 计算阶乘的递归方法
4    public static int factorial(int n) {
5        if (n <= 1) {
6            return 1; // 递归终止条件
7        } else {
8            return n * factorial(n - 1); // 递归调用
9        }
10    }
11
12    public static void main(String[] args) {
13        int number = 5;
14        System.out.println(number + "! = " + factorial(number));
15    }
16}

在这个例子中,factorial方法通过判断基本情况(n <= 1)来确定递归的终止条件,然后通过n * factorial(n - 1)的调用来实现问题规模的逐步减小,直至达到终止条件。这种方法直观地展示了递归的原理和魅力。

标签:方法,阶乘,参数,重载,重写,public
From: https://blog.csdn.net/liangzai215/article/details/140425773

相关文章

  • 什么是 Java 中的静态变量和静态方法?它们在类与对象间的关系是如何体现的?
    在Java编程的世界里,静态变量和静态方法是两个非常基础且重要的概念,它们让我们的代码更加灵活和高效。想象一下,你正在设计一个班级管理系统,每个学生都有姓名和学号,但班级的名称只有一个,对所有人共享。这里的班级名称就可以用静态变量来表示,因为它不属于任何一个特定的学生,而是......
  • 电工电子实验报告——差分放大器的测试方法
    差分放大器实验目的1.熟悉差动放大器电路的组成原理及用途;2.掌握差动放大器静态参数的测量方法;3.掌握差动放大器动态参数(差模放大倍数Aud,共模放大倍数Auc,共模抑制比KCMR)的测试方法:4.掌握带恒流源差动放大电路的调试方法。主要仪器设备及软件硬件:双踪示波器......
  • C# 1.方法
    方法组成: 1.修饰符:public一般定义共有的2.方法返回值:void无返回值;非void,可以写成其他类型例如int,float,string,string[]等3.方法名:Add大驼峰命名法,每一个首字符大写。4.参数列表:两个参数直接使用逗号隔开inta5.方法体:【】//定义类publicclassText{publ......
  • 东风日产Nissan(天籁)智联屏菜鸟级安装APP、carlife方法
    适用车型......
  • 流形对齐方法
    流形对齐方法解决异构多源数据中存在关联缺失的问题流形对齐(ManifoldAlignment)是一种在流形学习领域的典型方法,主要用于处理来自不同分布或不同数据源的数据集,目的是将它们投影到同一特征空间中,同时保持各自原有的流形结构和样本间的相似性。流形对齐方法在迁移学习、......
  • 软件测试理论知识-分类和方法
    一、软件测试分类汇总分类方法分类内容按开发阶段单元测试、集成测试、系统测试、验收测试按测试实施组织α、β、第三方按测试执行方式静态测试、动态测试按是否查看代码黑盒测试、白盒测试、灰盒测试按是否手工执行划分手工测试、自动化测试按测试对......
  • 《剑指JVM》——第6章——本地方法栈——运行时数据区篇12
    ......
  • OFD电子发票如何转成PDF?分享3种简单方法
    用频率较高,那么遇到OFD文件怎么转成PDF格式呢?今天教大家三种OFD转PDF方法,快来一起看看吧。一、在线OFD转PDF最好用最方便的方法还得是在线转换,不仅不需要安装软件,手机也可以直接用,而且还能免费哦。操作步骤如下:1、打开ilovepdf中文版,在官网首页左侧的菜单栏中找到“转换”选项......
  • 如何用 4 种简单方法将联系人从Mac同步到 iPhone
    毫无疑问,联系人对我们至关重要。作为Apple用户,您可能已在Mac上备份了大量联系人。当您更换新手机或希望再次访问这些重要联系人时,您可能想知道如何将联系人从Mac同步到iPhone。虽然iCloud是一个选择,但您可能也在寻找一种不依赖互联网的直接方法。本文提供了4种方法,帮助您找到答......
  • 全志科技官方Ubuntu16.04根文件系统镜像的替换和测试方法
    本文主要基于全志A40i开发板——TLA40i-EVM,一款基于全志科技A40i处理器设计的4核ARMCortex-A7高性能低功耗国产评估板,演示Ubuntu根文件系统镜像的替换和测试方法。创龙科技TLA40i-EVM评估板接口资源丰富,引出双路网口、双路CAN、双路USB、双路RS485等通信接口,板载Bluetooth、WIFI......