A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊其杰 中级黑马   /  2013-3-16 10:44  /  6663 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造函数是没有返回值,那用void可以吗?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 鼓励一下

查看全部评分

7 个回复

倒序浏览
构造函数作用是在类初始化的同时初始化一些变量或参数,不需要返回值;
而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);
}
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
构造函数有构造函数的格式,构造函数的目的就是在创建该类对象并进行初始化时用到,
这个问题就相当于在问构造函数可以像一个一般函数一样被其他函数调用么,因为被调用就需要声明返回值类型
这是我的理解 ,不知正确否

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
我这里给你想想说下!让你多理解下!
1.构造方法的作用
                初始化对象
               
                类名 引用名=new 构造方法();

2.构造方法的格式

                1.构造方法的名字必须与类名相同。
                2.构造方法不能有修饰符(权限除外 public private )
                3.构造方法没有返回值类型 void也没有。
3.构造方法的注意事项
                1.如果一个类没构造方法,那么当它加载时, jvm会为其分配一个默认的空的无参构造方法
                  但是如果我们手动去创建了一个构造方法,那么默认的就不会在创建。

                2.构造方法是用来创建对象的,我们程序员不能手动调用构造方法。

                3.构造方法也可以重载。好处是可以通过多种途径去实例化类的对象。

               
        构造方法带参数的目的:是可以在创建对象的过程中就对对象的属性进行赋值操作。
        以后在开发中使用别人写的类时,就需要查看其提供什么样的构造方法,才能通过构造方法实例化对象去使用。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
答案是不能,没有返回值和返回值为void是两种概念
《Thinking in java》这本书里头是这么解释的:
"The constructor is an unusual type of method because it has no return value. This is distinctly different from a void return value, in which the method returns nothing but you still have the option to make it return something else. Constructors return nothing and you don’t have an option (the new expression does return a reference to the newly created object, but the constructor itself has no return value). If there were a return value, and if you could select your own, the compiler would somehow need to know what to do with that return value."
总结下原因就是,构造函数是完全不能够返回值的,我们没有选择。而void是我们有选择的不返回一个值。只有这样区分了,虚拟机才知道哪个是构造函数。
我们可以写段代码来看返回类型为void时是否能作为构造函数被调用:
  1. public class ConstructorTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Test test = new Test();
  6.                 System.out.println("x="+test.x);
  7.         }

  8. }

  9. class Test
  10. {
  11.         void Test()
  12.         {
  13.                 x=10;
  14.         }
  15.        
  16.         int x;
  17. }
复制代码
输出结果为:x=0
由此我们看来,实例化Test时并没有调用void Test()这个方法使x被赋值为10。也就是说,加了void就不是构造函数了。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
构造方法必须和类相同的名,虽然不会又返回值,也不能在里面加入return返回,因为方法名和类名相同,可以自动调用这个构造方法,如果加入void就变成普通的方法了,不再是构造方法了
回复 使用道具 举报
构造函数与其他函数的区别你要理解,最大的区别是
1.构造函数没有返回值,并且构造函数是new新对象时候就自动运行
2.他和类必须相同的名

如果你加入void或是其他的返回值,那你定义的不是构造函数,而是其他的函数(方法),new新对象的时候不会自动的运行
回复 使用道具 举报
若还有问题,请继续追问;没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马