【问题标题】:Why does a void method not accept an integer in the parameters? [duplicate]为什么 void 方法不接受参数中的整数? [复制]
【发布时间】:2020-04-05 08:22:42
【问题描述】:

我的代码是:

public class Q2Client {
   public static void main(String[] args) {
   Q2 newq2 = new Q2(5);
   }
} 


class Q2 {
   int x;
   public void Q2 (int y) {
   int x = y;
   }
}

我在创建 newq2 时收到关于不接受整数(必需:无参数)的错误,但 Q2 显然需要一个整数。当我删除 Q2 类中的 void 时,它不会给我错误并且运行良好。 void导致参数(int y)无效怎么办?

【问题讨论】:

  • 您正在尝试将方法用作构造函数。从Q2 的签名中删除单词void。此外,您正在创建一个局部变量 x,它隐藏了类变量 x
  • 只需跳过public void Q2 (int y) 中的void,您就可以将该方法设置为可以由new Q2(5) 调用的构造函数。现在 Q2 只有默认构造函数,没有参数,因此问题。
  • 在java中,如果你创建一个与类同名的方法,它是一个“构造函数”而不是一个常规方法。它创建 Q2 类的一个新实例,并自动返回它(因此您无需选择返回类型。)

标签: java class object methods parameters


【解决方案1】:

构造函数没有返回类型! 按如下方式更改您的 Q2 课程

class Q2 {
   int x;
   public Q2 (int y) {
     this.x = y;
   }
}

【讨论】:

    【解决方案2】:

    这样编码:

     class Q2 {
         int x;
         public Q2 (int y) { // attention:remove the void 
         int x = y;
       }
    }
    

    表示Q2的方法是Q2类的构造函数,它接受一个整数类型的参数。 但是,如果你定义这样的方法:

     public void Q2 (int y) { // attention:NOT remove the void 
          int x = y;
        }
    

    表示你告诉机器要定义一个通用方法,注意:类没有构造函数!参考JAVA参考,会调用没有参数的默认构造函数,然后调用new Q2(5)会出错。

    【讨论】:

    • 您仍然错误地隐藏了x 字段
    猜你喜欢
    • 2017-08-11
    • 1970-01-01
    • 2015-12-05
    • 2014-12-06
    • 2022-09-23
    • 2021-09-27
    • 2014-12-24
    • 2015-08-21
    • 2021-04-29
    相关资源
    最近更新 更多