为了账号安全,请及时绑定邮箱和手机立即绑定

方法重载未按预期工作

方法重载未按预期工作

白猪掌柜的 2021-12-01 15:28:40
在 Java 中函数重载是关于函数参数的类型或数量是我不正确请纠正我我正在做一些测试,我发现 Java 重载不正确,例如 public static void doSomeThing()和 public static int doSomeThing()。这两个函数是相同的,它不应该编译但它正在运行。喜欢这个代码。package com.sudeep.test;public class StaticFunctionOverload {    public static void main(String arg[]) {        doSomeThing();    }    public static int doSomeThing() {        System.out.println("Im in int block");        return -1;    }    public static void doSomeThing() {        System.out.println("Im in void block");    }}
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

正如多次提到的,它不应该编译。但是我也看到了您的屏幕截图以及它在您的计算机上实际运行时的困惑。

我认为您所看到的 eclipse 有一个“功能”,当它遇到错误时,它会运行该类的旧版本。我假设您之前只使用该int方法构建并运行了该类,然后再添加该方法void

如果是这种情况,您可以做以下几件事:

  1. 如果您确实想保留此功能(当存在错误时启动旧版本),您可以执行清理(菜单:项目>清理...)以清除先前构建的版本。如果您现在尝试运行,Java 将停止并抱怨它无法构建您的源代码。

  2. 如果您认为此“功能”实际上可能有害,请转到“窗口”>“首选项”>“运行/调试”>“启动”>“如果项目包含错误则继续启动”>“提示”

//img1.sycdn.imooc.com//61a724570001025205320269.jpg

查看完整回答
反对 回复 2021-12-01
?
千巷猫影

TA贡献1829条经验 获得超7个赞

方法的签名必须不同:


Java 编程语言支持方法重载,Java 可以区分具有不同方法签名的方法。这意味着如果类中的方法具有不同的参数列表,则它们可以具有相同的名称(对此有一些限定,将在题为“接口和继承”的课程中讨论)。


读这个:


https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html


因此,这将起作用,例如:


package com.sudeep.test;


public class StaticFunctionOverload {

    public static void main(String arg[]) {

        doSomeThing();


    }


    public static int doSomeThing() {

        System.out.println("Im in int block");

        return -1;

    }


    public static void doSomeThing(int param1) {

        System.out.println("Im in void block with " + param1);

    }


}



查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信