【问题标题】:What will be the output if the argument's date type is different?如果参数的日期类型不同,输出会是什么?
【发布时间】:2017-11-06 07:01:59
【问题描述】:

如果重载时实参和形参的数据类型不同会怎样?

Class A
{
   public void m1(int i)
    {
    System.out.println("int");
     }
     public void m1(float f)
     {
     System.out.println("float");
     }
 Public static void main(String[] args)
 {
  A a=new A();
  a.m1('a');
  a.m1(10l);
  }
  }

【问题讨论】:

  • 只要你写代码只是为了让你的问题清楚,为什么不把它缩进清楚呢?
  • 您的代码无法编译。请提供一个最小的工作示例(另请参阅stackoverflow.com/help/mcve
  • 为什么不直接运行你的程序看看会发生什么?
  • @SteveSmith 好建议,因为那样 OP 会发现代码甚至无法编译,就像 dunni 评论的那样,也许还能学到一些东西。

标签: java overloading


【解决方案1】:

与参数类型对应的函数被调用,这是 OOP 的一些基础知识,不仅在 java 中,而且在所有其他语言中。

【讨论】:

    【解决方案2】:

    调用具有最接近匹配的有效签名的方法。这很可能是直接匹配(例如完全相同的函数参数类型),或者(如在您的代码中)运行时知道如何自动将 char a 转换为 int,因此带有 int 参数的方法是调用。

    【讨论】:

      【解决方案3】:

      在重载方法解析中,如果具有特定参数的匹配方法不可用,编译器不会立即引发任何错误, 首先,它将参数提升到下一个级别并检查匹配的方法。 1)如果匹配的方法可用,那么它将被考虑,如果它不可用,则编译器再次将此参数提升到下一个级别。 2)如果匹配的方法不可用,这个过程将一直持续到所有可能的促销仍然存在。那么只有我们会得到编译错误。 3)这在重载中称为自动提升。 以下是java中可能的促销活动 字节->短/字符->整数->长-> 浮动->双

      【讨论】:

      • 本次转换不可能倒序。
      猜你喜欢
      • 2018-10-20
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多