为什么在参数化构造函数中出现此错误?

时间:2013-09-06 14:00:47

标签: java constructor compilation

好的,下面是代码:

public class MyClass {

long var;
public void MyClass(long param)
{
var=param; //st1
}

public static void main(string args[])
{
MyClass a,b;
a=new MyClass(); //st2
b=new MyClass(5); //st3
}

}

为什么错误发生在st3而不是st2行?

1 个答案:

答案 0 :(得分:2)

此:

public void MyClass(long param)

声明一个名为MyClass方法,而我怀疑你想要一个构造函数。删除返回类型:

public MyClass(long param)

那时我怀疑你会得到你期望的行为。

我个人认为Java 允许你声明一个与包含类型同名的方法是一个设计缺陷,但这是另一回事。

另请注意

main(string args[])

应该是

main(String args[])
传统上

或更多:

main(String[] args)