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 的编程哲学,不符合你的预期不代表它不合理!!

...请问没有返回值和返回值类型为void,有什么区别?
public class MyPrint { public void MyPrint(){ \/\/这是一个方法,如果去掉void就是构造函数 System.out.println("method");} public test(){ \/\/提示错误,方法声明错误,必须加上返回值 } public static void main(String[] args){ MyPrint mp=new MyPrint(); \/\/构造函数自动调用 mp.My...

JAVA中构造函数中能不能使用return语句
构造函数是没有返回值,而不是没有具体类型的返回值,其和返回值是void的函数是完全不同的;构造函数的作用是对对象进行初始化的;是可以写的,不过只能是return;

java中void是没有返回值,那么,没有返回值到底什么意思,求详解
要想理解没有返回值,首先得从有返回值来说,有返回值就是值调用这个方法之后,这个方法结束后,它会得到一个实实在在的结果,这个结果是可以为我们直接调用使用的,故而可以知道,没有返回值就是指这个方法它只提供处理一段逻辑的过程,但是处理完了之后是不会有实在的结果的,或者说这个处理结果不是...

构造器没有任何返回类型,哪怕是void也不行. 是对还是错为什么?
构造函数没有返回类型,即使是void类型也没有。这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个清楚、可用的对象。构造方法是一种特殊的方法,具有以下特点。(1)构造方法的方法名必须与类名相同。

java中void的用法
id 除了说明该方法没有返回值以外,并没有其它的作用。构造方法应该来说是一个特殊的方法,但是其实可以理解为构造方法是有返回值的。Person p = new Person();我们在使用 new Person() 时,这个构造函数被执行了,而返回值,就是新的对象。回复楼主的两个问题:为什么要用void来规定方法没有返回值...

说构造函数没有返回值类型,但是构造函数有返回值吗?
构造函数没有返回值,因为其默认是返回给this自己的。如果定义了是变量,通过this指针初始化变量属性的值,如果定义指针形式,通过new 调用构造函数生成一个存放属性值得内存指针赋给指针变量。

请问构造函数的返回值类型只能是void型,对吗?
构造函数的返回类型不可指定 如果在构造函数前面写上void ,那么构造函数就变成无效的了。构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。其他方法都有返回值,即使是void返回值。

C++里的返回void类型的函数与无返回值的函数的区别是什么?
构造函数和析构函数是用于创建和摧毁对象,所以不需要返回值。下面是两种函数的区别。【普通函数】通俗的讲,就是通过传入“数据”(某些情况不需要输入),计算之后,“输出”需要的值,或者执行所需的操作。所以普通函数的重点在于“输出”。如果该函数的确不需要“输出”数据,那么通过void来进行标记,就...

Java语言中,构造方法和一般方法有何不同
方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。 3。两者的命名。构造器使用和类相同的名字,而方法则不同。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。 构造方法和方法中this和...

java中有void一定有return吗
既然不要void,一般都要返回值的,要不你这个方法准备做什么呢,就是return后面的值。java所有的方法(或叫函数)分3种 1、void 型,不返回东西 2、返回型,返回值的类型就是方法的类型,所以一看public double mianji(){ },就知道要返回一个 double 值 3、构造函数也叫构造方法,一般用来赋初始...

相似回答