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 提供默认的无参数构造函数,这就是为什么你可以在构造函数中不发送参数并让它编译。
删除 static
和 int
.
public Value(int num) {
您的 class 不会覆盖 Object
's toString()
method,它负责您看到的 Value@15db9742
输出。您需要覆盖它以提供当您将它传递给 System.out.println
时最终将输出的文本。这样做有什么意义:
将值存储在class.
中的一个实例变量中
private int num;
public Value(int num) {
this.num = num;
}
然后引用toString()
中的实例变量。
@Override
public String toString()
{
return String.valueOf(num);
}
此外,您的 test3
class 不应扩展 Value
; test3
不是 Value
.
在下面的代码中,一个整数被发送到要返回的构造函数。问题是,当在构造函数中将值设置为参数时,它拒绝编译并输出不需要参数。
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 提供默认的无参数构造函数,这就是为什么你可以在构造函数中不发送参数并让它编译。
删除
static
和int
.public Value(int num) {
您的 class 不会覆盖 Object
's toString()
method,它负责您看到的 Value@15db9742
输出。您需要覆盖它以提供当您将它传递给 System.out.println
时最终将输出的文本。这样做有什么意义:
将值存储在class.
中的一个实例变量中private int num; public Value(int num) { this.num = num; }
然后引用
toString()
中的实例变量。@Override public String toString() { return String.valueOf(num); }
此外,您的 test3
class 不应扩展 Value
; test3
不是 Value
.