Java函数拒绝接受参数

Java函数拒绝接受参数,java,class,pointers,constructor,Java,Class,Pointers,Constructor,在下面的代码中,一个整数被发送到构造函数以返回。问题是,当在构造函数中将值设置为参数时,它拒绝编译并输出不需要参数的结果 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) { retur

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

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
我在这里做错了什么?我尝试过使用公共类,但不起作用。

构造函数使用窗体可见性classnameparams。在您的情况下,这将是:

public Value(int num) {...}

static没有意义,因为您谈论的是类的实例,int没有意义,因为构造函数不返回任何内容,而是隐式返回创建的对象。

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

{visability} {ClassName}(/* arguments */) {/* body */};
注意缺少返回类型。构造函数不会显式返回任何内容。因此,在您的情况下,应该是:

public Value(int num) { /* do something with num */ }
与它们所在的类同名,但它们从来没有返回类型,甚至没有void,并且它们不能是静态的。如果它们有这两种方法中的任何一种,那么它们将被解释为正常方法。然后Java提供默认的无参数构造函数,这就是为什么您可以在构造函数中不发送任何参数并对其进行编译的原因

删除static和int

您的类不重写,这将负责Value@15db9742您看到的输出。您将需要重写它,以提供在将其传递给System.out.println时最终输出的文本。要做到这一点,有任何意义:

将值存储在类内的实例变量中

private int num;
public Value(int num) {
    this.num = num;
}
然后参考toString中的实例变量


此外,test3类不应该扩展值;test3不是一个值。

你认为应该输出什么,为什么?你对构造函数使用了错误的语法。构造函数不应该是静态的,也不应该返回任何类型的值。我怎么会使用错误的语法呢?如果你想删除这个问题,就删除它,不要破坏它。
private int num;
public Value(int num) {
    this.num = num;
}
@Override
public String toString()
{
    return String.valueOf(num);
}