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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙沛 中级黑马   /  2012-8-29 21:05  /  2271 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

查了下所有的函数都必须有返回值或void类型。
可构造函数却没有返回值,也没有void类型。
不知道为什么

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

5 个回复

倒序浏览
因为构造函数主要是用于对对象进行初始化的,不需要返回值。如果有返回值就不叫构造函数啦。就叫方法啊!
回复 使用道具 举报
楼主可以先重温一下构造函数的特点
构造函数:
        特点:1、函数名和类名相同
          2、不用定义返回值类型
          3、不可以写return语句
        作用:
        创建一个对象都会执行这个构造函数,所以构造函数的作用给对象进行初始化。
        每一个对象的创建,都必须要通过对应的构造函数进行初始化,对象不初始化是不能用的。
        注意:
        之前写对象的时候也没有写构造函数?因为该类当中的在没有定义类的情况下有一个默认的空参数的构造函数,方便与该类的对象进行初始化。
        如果在类中定义了具体的构造函数,那么默认的空参数构造函数就没有了。

构造函数和一般函数的区别:
        格式:
        两种函数的格式不同:
        构造函数:修饰符 类名(参数列表){}
        一般函数:修饰符 返回值类型 自定义函数名(参数列表){}
        运行方式
        构造函数:构造函数是在对象已经建立就执行对应的构造函数,给对象进行初始化。
        一般函数:对象创建后,再调用一般函数。
        作用不同
        构造函数:是对对应对象进行初始化的,叫做对象已建立时要做什么事情?
        一般函数:给对象提供更多的功能,方便与对象的调用。
        调用次数
        构造函数:对象创建时,就调用一次,因为初始化动作最先执行,只执行一次
        一般函数:对象创建后,可以被多次调用。
       
回复 使用道具 举报
构造函数是一种很特殊的函数,因为他没有返回值。这和‘返回值为void’有极大的差别。返回void时,一般函数并不返回任何东西,但是一般的函数能够选择是否要返回些什么东西。构造函数则绝对不返回任何东西,而且你也没有任何选择。如果它有一个返回值,而且你有权利选择你自己的返回型别(return   type),编译器势必得通过某种方式来知道如何处理那个返回值。”

很明显,其意思是void更想一种mark,告诉编译器我目前没有返回值,但这是可选的,将来未必没有,但构造函数从概念上来说将肯定没有返回值,于是通过某种特殊的设计将其变为不带任何返回参型(包括void)的函数。

回复 使用道具 举报
楼主其实也可以这样理解

为什么叫构造函数呢?它本身就是一种特殊的函数,你完全可以认为规定就是这样写构造函数的,而编译器也是基于这种规定来区分是否是构造函数,因为构造函数有它特殊的作用,编译器必须找到它

构造方法对返回类型没有选择权,也就是说不加任何返回修饰符,以示与其他的方法的区别
   --void   表示我可以控制它返回类型,就是不让它返回嘛,显然有选择权了
这样编译器才发现,喔~~,原来这个就是构造方法,然后被编译器加上默认的类返回类型
、如果你硬要加上返回类型的话,那就不是构造方法啦?

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

回复 使用道具 举报
构造函数实质上是返回该对象的一个引用
构造函数是为了初始化这个类的实例,从不被方法调用表达式调用,虚拟机规范中定义他为象一个没有结果类型的方法声明
虚拟机找到指定的方法main(),并传递给他一个串参数,装载本类以及相关类连接,并初始化。同时规范中指出了必须是public   static   void   ,具体原因没有说明
构造函数作用是在类初始化的同时初始化一些变量或参数,不需要返回值;
而void指的是方法,当一个方法只是完成某种功能计算时并不需要返回值。

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马