黑马程序员技术交流社区

标题: 为何构造函数不需要返回值 [打印本页]

作者: 詹季春    时间: 2011-7-26 16:21
标题: 为何构造函数不需要返回值
:lol 帮大家复习知识:lol 都来讨论讨论
如下[code=java]public Person(String name , int age ){
      this.name = name ;
      this.age = age ;
}[/code]
[ 本帖最后由 詹季春 于 2011-07-26  16:22 编辑 ]
作者: 匿名    时间: 2011-7-26 16:42
构造器是一种特殊类型的方法,因为他没有返回值。这与返回值为空(void)明显不同。对于空返回值,尽管方法本身不会自动返回什么,但仍然可以选择让他返回别的东西,构造器则不会返回任何东西,你别无选择(new表达式确实返回了对新建对象的引用,但构造器本身并没有任何返回值)。假如构造器具有返回值,并且允许人们自行选择返回类型,那么势必得让编译器知道该如何处理此返回值。——————转自《Java编程思想》
作者: 匿名    时间: 2011-7-26 16:43
Java对象都是在堆中构造的,构造方法总是伴随着new操作符一起使用,那我觉得构造函数再有返回值就有点说不通了,如果有返回值,它返回去给谁?构造方法只是在内存中为对象开辟了一块新"地方"。以下陈述不是在回答问题,只是在复习一下。:lol
构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)构造方法不能由编程人员调用,而要系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
作者: 匿名    时间: 2011-7-26 16:58
因为编译器要和别的方法区别。
作者: 匿名    时间: 2011-7-26 18:09
Java的构造函数没有任何返回值,其返回值并没有什么实际的意义。创建一个对象用new运算符来执行,例如Student student=new Student ();此时系统自动调用Student 类的构造函数,然后返回一个指向对象地址的一个引用。
作者: 匿名    时间: 2011-7-27 16:59
:lol 貌似都没有一个确切的答案啊。
作者: 匿名    时间: 2011-7-27 17:05
构造函数没有返回值,主要是为了区分构造函数和其它方法。 可以尝试在构造函数前加上void,就会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。
作者: 匿名    时间: 2011-7-27 18:31
因为构造器的返回值类型总是[color=Red]当前类[/color]。所以,构造器不能申明返回值类型,也不能使用void申明构造器没有返回值。[code]//请看以下代码
public class Person {
       
        public static void main(String[] args){
                //定义一个Person类型的变量
                Person p = new Person();//通过new关键字调用Person类的构造器,返回一个Person实例,并将该实例赋给变量p
        }
}[/code]
作者: 匿名    时间: 2011-7-27 18:51
标题: 回复 楼主 的帖子
Java的构造函数没有任何返回值,其返回值无实际的意义,目的是为了区分一般的方法
作者: maxwell247    时间: 2015-9-16 18:24
谢谢楼上各位高手的解答,我明白了。
作者: 子午鼬    时间: 2015-12-27 02:25
看来应该看一下java编程思想了666




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