Java 函数拒绝接受参数

Java function refuses to take parameters

在下面的代码中,一个整数被发送到要返回的构造函数。问题是,当在构造函数中将值设置为参数时,它拒绝编译并输出不需要参数。

class test3 extends Value {
   public static void main(String[] args) {
   Value var = new Value(3);
   System.out.println(var);
   }
}
class Value {
   public int Value(int num) {
   return num;
   }
}

没有传参时,编译输出一个指针值

Value@15db9742

我哪里做错了(我试过使用public类但是没用)?

构造函数使用 visibility classname(params) 形式。在您的情况下,这将是:

public Value(int num) {...}

static 没有意义,因为你在谈论 class 的实例,int 没有意义,因为构造函数没有 return 任何东西(它隐式 return 是创建的对象)。

Java 中的构造函数始终具有以下形式:

{visability} {ClassName}(/* arguments */) {/* body */};

注意缺少 return 类型。构造函数不会 return 明确地做任何事情。所以在你的情况下应该是:

public Value(int num) { /* do something with num */ }

Constructors 与它们所在的 class 同名,但它们从来没有 return 类型(甚至没有 void),并且它们不能是 static。如果它们具有其中任何一个,那么它们将被解释为正常方法。然后 Java 提供默认的无参数构造函数,这就是为什么你可以在构造函数中不发送参数并让它编译。

  1. 删除 staticint.

    public Value(int num) {
    

您的 class 不会覆盖 Object's toString() method,它负责您看到的 Value@15db9742 输出。您需要覆盖它以提供当您将它传递给 System.out.println 时最终将输出的文本。这样做有什么意义:

  1. 将值存储在class.

    中的一个实例变量中
    private int num;
    public Value(int num) {
        this.num = num;
    }
    
  2. 然后引用toString()中的实例变量。

    @Override
    public String toString()
    {
        return String.valueOf(num);
    }
    

此外,您的 test3 class 不应扩展 Valuetest3 不是 Value.