【问题标题】:Method overriding in java with same number of parameter but different return typejava中的方法覆盖具有相同数量的参数但不同的返回类型
【发布时间】:2016-11-10 10:37:52
【问题描述】:
class TestOverride{
    public int testVlaue(int a,int b){
        return a + b;
    }

    public float testValue(int x,int y){
        return x + y;
    }

    public float testValue(float x){
        return x;
    }
}
public class CodeTester{
    public static void main(String a[]){
        TestOverride objTest = new TestOverride();
        System.out.println(objTest.testValue(2));
        System.out.println(objTest.testValue(2,3));
    }
}

为什么输出如下?

2.0
5.0

返回值5也可以采用int而不是float的返回类型?

【问题讨论】:

  • 你想怎么做? Java 如何知道你想执行哪个函数?它执行第一个匹配。基本上,这种编程在很多层面上都是错误的。
  • 不要将你的问题埋在代码中的 cmets 中。不清楚你在问什么。
  • @RDC 如果您要编辑,请编辑。修复一切。不只是一个字符。

标签: java methods return overriding


【解决方案1】:

如果你想进行重载,你必须改变以下几点之一的方法签名:

  1. 参数类型。
  2. 参数数量。
  3. 方法中声明的参数的顺序。

返回类型不被视为方法签名之一,因此如果您有两个具有相同名称和不同返回类型的方法,则会出现编译错误,不允许这样做。

最后,在您的代码中,您有两个名称不同的方法,因此没有编译错误,您调用返回 float 的方法

看vl和va的不同

testVlaue
测试值

你拨打System.out.println(objTest.testValue(2,3));第二个

【讨论】:

  • 问题是关于覆盖,而不是重载。
猜你喜欢
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 2019-04-15
  • 2013-07-27
相关资源
最近更新 更多