黑马程序员技术交流社区

标题: 构造方法问题 [打印本页]

作者: 黄奇耀    时间: 2012-3-30 22:26
标题: 构造方法问题
构造方法可以有返回值吗?为什么?
作者: 朱鹏举    时间: 2012-3-30 22:36
构造方法是不能有返回值的,它的作用仅仅是初始化类中的值。

作者: 张立江    时间: 2012-3-30 22:37
构造方法是不能有返回值的,void也不行,Java语法规定的。
构造方法有两种,一种带参数的构造方法,另一种不带参数构造方法,即空参数构造方法。
构造方法在类的实例被初始化的时候调用
作者: 陈坚    时间: 2012-3-30 22:40
在Java中,任何变量在被使用前都必须先设置初值.Java提供了为类的成员变量赋初值的专门功能:构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:   
1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
2.构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。
3.每个类可以有零个或多个构造方法.
4.不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。
5.构造方法在创建对象时自动执行,一般不能显式地直接调用.
作者: 朱鹏举    时间: 2012-3-30 22:46
第一个回答技术贴总该有分吧,嘿嘿{:soso__18178828760137886864_2:}
作者: lipanfeng    时间: 2012-3-30 22:52
构造函数是没有返回值的,它的出现主要是为了创建非静态类对象的
作者: 胡川    时间: 2012-3-30 23:30
构造方法不允许有返回值。如果有返回值。那就成为了普通的方法。在构造的时候会使用JDK提供的隐式构造方法。你写的前四种构造方法通过不同的参数表而形成了重载。实际上我觉得重载的意义并不是非常大。可能是我接触的较少。觉得重写的意义要比重载的意义大的多。而你下边方法名重复的方法。就是一种典型的重写。但是一般重写是不会出现在同一个类里的。一般都是具象类实现抽象类。或者根据需求子类重新定义父类同名方法的一种形式。
作者: 刘_浩    时间: 2012-3-31 00:15
构造方法是没有返回值的,注意不是void,它代表有返回类型的。构造方法是对应的对象进行初始化的。
作者: 陈苓    时间: 2012-3-31 01:22
      不能有返回值,构造函数最大的作用就是完成对象的初始化工作,列如:String str = new String();  此语句中String()是String类的构造方法,但是对象却不是有构造方法创建的,而是由new关键字创建的,new关键字有两个工作,一个是根据String类的定义,在堆内存中其分配内存即创建对象,完成对象的创建工作后则需要为对象进行初始化,因此在位此类创建对象时将根据new关键字后的构造方法的参数自动调用该类的不同形式的构造方法,字符串类型的变量str获取的对象的引用时由new关键字返回的,而不是构造函数返回的。
作者: 蒙武辉    时间: 2012-3-31 01:24
记住构造方法仅仅是给成员变量初始化,也就是给成员变量一个初值,不需要返回值。
作者: 如梦初醒    时间: 2012-3-31 22:22
本人愚见:构造方法有返回值,返回的就是new出来的对象本身,对象就是通过构造方法new出来的,如果构造方法没有返回值,那程序怎么能得到new出来的对象呢?
如果将构造方法定义为private,那么这在个类外部是无法new出这个对象的,每个类都是通过其构造方法来返回这个类的对象的,可见构造方法是有返回值的。
作者: 黄方    时间: 2012-3-31 23:34
本帖最后由 黄方 于 2012-3-31 23:36 编辑

请弄清楚构造函数和方法的区别:构造函数无返回值,它的作用仅仅是初始化类中的值;一个类的构造方法的返回值应该是该类本身,方法有返回值,进行的是运算,就算无返回值也要打上void~~~~~~
作者: 袁野    时间: 2012-4-1 07:42
我的理解
构造方法不是 方法
因为 没有返回值,方法名 只能和类名相同,只能说他特殊,而不能说他是一个方法
作者: 如梦初醒    时间: 2012-4-1 09:16
对我上面错误回答的更正:
构造方法是一种特殊类型的方法,没有返回值。
这与返回值为空(void)不同。
对于空返回值,尽管方法本身不会自动返回什么,但任然可选择让它返回别的什么东西。
构造方法则不会返回任何东西,你别无选择(new表达式确实返回了对新建对象的引用,
但构造方法本身并没有任何返回值)。

假如构造方法具有返回值,并且允许人们自行选择返回类型,那么势必得让编译器知道该如何处理此返回值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2