Java中,构造函数没有返回值。请问没有返回值和返回值类型为void,有什么区别?

我知道没有返回值和返回值类型为void,是不一样的。但是,到底哪里不一样呢?希望大侠们能举例说明。
希望不要以“这是规定”来回答该问题。我知道这是个“规定”。但是,Java的设计者为什么要做这样的规定呢?为什么让构造函数没有返回值,而不让构造函数的返回值为void呢?如果说为了不给编译器带来额外的麻烦,统一让所有的构造函数的返回值均为void也不会很麻烦啊。希望有大侠不仅能“知其然”,更能“知其所以然”

这就是规定,如果你现在自己做一个新语言的编译器,也可以规定构造函数必须加上void,或者一个特殊的返回值。
那么为什么构造函数没有返回值呢,主要是为了区分构造函数和其它方法。其实,你可以尝试在你的构造函数前加上void,你会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。

下面有一个例子,你可以测试看看:

public class MyPrint {
public void MyPrint(){ //这是一个方法,如果去掉void就是构造函数
System.out.println("method");
}

public test(){ //提示错误,方法声明错误,必须加上返回值

}
public static void main(String[] args){
MyPrint mp=new MyPrint(); //构造函数自动调用
mp.MyPrint(); //方法必须显示调用
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-31
Java中创建对象的方法就是使new 关键字调用构造函数来创建对象(另一个创建对象的方法是clone()函数,他的返回值为Object),所以可以理解为构造函数的返回值是一个对象。
返回值类型为void才是真正的无返回值函数。

构造函数是使用new关键字来调用的。
其它函数是用对象名或类名加.的方式来调用的。
第2个回答  2010-01-31
构造函数作用是在类初始化的同时初始化一些变量或参数,不需要返回值;
而void指的是方法,当一个方法只是完成某种功能计算时并不需要返回值。

比如说
class A{

int a;
int b;
//构造函数
public A(int a,int b){
this.a = a;
this.b = b;
}
//void 方法,只是完成计算
void plus(){
System.out.println(a+b);
}
}
第3个回答  2010-01-31
这就是规定,没啥解释的
A a = new A();
会去寻找他的无参构造器,他不是一个方法不需要void;
第4个回答  2012-07-02
规定就是规定。这是别人设计 Java 的编程哲学,不符合你的预期不代表它不合理!!
相似回答