40-Java方法重载、return关键字的单独使用

一、方法重载

  • 同一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法就是 重载方法

二、案例导学

  • 开发武器系统,功能需求如下:
    • 可以默认发一枚武器
    • 可以指定地区发射一枚武器
    • 可以指定地区发射多枚武器
package com.app.overload;

/**
    目标:识别方法重载的形式,并理解其调用流程
    案例导学:
        开发武器系统,功能需求如下:
             - 可以默认发一枚武器
             - 可以指定地区发射一枚武器
             - 可以指定地区发射多枚武器
 */

public class MethodDemo1 {

    // 可以默认发一枚武器
    public static void fire() {
        System.out.println("默认发射一枚武器给米国~");
    }

    // 可以指定地区发射一枚武器
    public static void fire(String location) {
        System.out.println("给" + location + "发射一枚武器~");
    }

    // 可以指定地区发射多枚武器
    public static void fire(String location, int nums) {
        System.out.println("给" + location + "发射" + nums + "枚武器~");
    }

    public static void main(String[] args) {
        // 调用方法,传递值,进行发射武器
        fire();
        fire("德国");
        fire("美国", 100);
    }
}
输出结果:

默认发射一枚武器给米国~
给德国发射一枚武器~
给美国发射100枚武器~

图文解析

在这里插入图片描述

三、方法重载的好处

  • 可读性好,方法名称相同提示是同一类型的功能,通过形参不同来实现功能差异化的选择,这是一种专业的代码设计。
package com.app.overload;

/**
    目标:识别方法重载的形式,并理解其调用流程
    案例导学:
        开发武器系统,功能需求如下:
             - 可以默认发一枚武器
             - 可以指定地区发射一枚武器
             - 可以指定地区发射多枚武器
 */

public class MethodDemo1 {

    // 可以默认发一枚武器
    public static void fire() {
        fire("米国");
    }

    // 可以指定地区发射一枚武器
    public static void fire(String location) {
        fire(location, 1);
    }

    // 可以指定地区发射多枚武器
    public static void fire(String location, int nums) {
        System.out.println("默认给" + location + "发射" + nums + "枚武器~");
    }

    public static void main(String[] args) {
        // 调用方法,传递值,进行发射武器
        fire();
        fire("德国");
        fire("德国", 100);
    }
}
输出结果:

默认给米国发射1枚武器~
默认给德国发射1枚武器~
默认给德国发射100枚武器~

  • 重点:方法重载时,由于方法名称相同的缘故,可以相互调用,优化了许多代码,非常灵活!
总结

1、方法重载是什么?

  • 同一个类中,出现多个相同名称的方法,但是形参列表不同

2、使用方法重载的好处?

  • 对于相似功能的业务场景:可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计。

四、方法重载的识别技巧

  • 只要是 同一个类中,方法名称相同、形参列表不同, 那么它们就是重载的方法,其它都不管!!

    (如:修饰符、返回值类型都不影响!!)

  • 形参列表的不同指的是:形参的 个数、类型、顺序 不同,不关心形参的名称。

package com.app.overload;

/**
    目标:识别重载方法的技巧
 */

public class MethodDemo2 {
    // 新方法
    public static void open(){}

    // 重载方法:形参列表多一个
    public static void open(int a){}

    // 重载方法:形参列表多一个,修饰符不关心
    static void open(int a, int b){}

    // 重载方法:形参列表类型不同
    public static void open(double a, int b){}

    // 重载方法:形参列表类型、顺序不同
    public static void open(int a, double b){}

    // 重复方法:形参列表类型重复,即使形参名称不同,但是类型重复就不是重载方法
    // public void open(int i, double b){}

    // 新方法:方法名称不同
    public static void OPEN(){}
}
总结

1、方法重载的关键要求是什么?

  • 同一个类中,多个方法名称相同、形参列表不同,其他不关心

2、形参列表不同指的是什么?

  • 形参的个数、类型、顺序不同,形参名称不关心

五、补充:单独使用 return 关键字

  • return ——> 可以立即跳出并结束当前方法的执行;return关键字单独使用可以放在任何方法中
package com.app.returndemo;

public class ReturnDemo {
    public static void main(String[] args) {
        // 目标:明确return关键字的作用
        chu(10, 0); // 数学bug:0不能作为除数
    }

    // 除法方法
    public static void chu(int a, int b) {
        int c = a / b;
        System.out.println("结果是:" + c);
    }
}
输出结果:

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at com.app.returndemo.ReturnDemo.chu(ReturnDemo.java:11)
	at com.app.returndemo.ReturnDemo.main(ReturnDemo.java:6)

  • 错误说明:也就是数学bug,0不能作为除数
  • 单独使用return关键字来解决这个错误!!
package com.app.returndemo;

public class ReturnDemo {
    public static void main(String[] args) {
        // 目标:明确return关键字的作用
        chu(10, 0);     // 数学问题:0不能作为除数
        chu(10, 5);     // 2
    }

    // 除法方法
    public static void chu(int a, int b) {
        if (b == 0){
            System.out.println("您输入的数据有问题,0不能作为除数");
            return;     // 发现输入的数据是0,所以单独使用return关键字——>立即跳出并结束当前方法chu的执行
        }
        int c = a / b;
        System.out.println("结果是:" + c);
    }
}
输出结果:
    
您输入的数据有问题,0不能作为除数
结果是:2

总结

1、如果要直接结束当前方法的执行,怎么解决?

  • return; 立即跳出并结束当前方法的执行。不影响其他方法的执行。

扩展回顾:

  • break; 立即跳出并结束当前所在循环的执行。不影响其他循环的执行
  • continue; 立即结束当前循环的当次执行,进入下一次执行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值