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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Destiny 中级黑马   /  2012-3-6 11:05  /  2409 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  我一开始有点疑惑,构造函数没有返回值,为什么不用void.
  后来我的理解是这样的: 其实类的构造函数时有返回值的,当我们用New关键字来调用构造函数的时候,构造函数时返回该类的实例。可以吧这个类的实例当为构造函数的返回值,因此构造函数的返回值类型总是当前类,因此无需定义返回值得类型。这样理解对吗??

6 个回复

倒序浏览
对于void的解释不同的人理解方式不同。可以这么理解,其实构造函数不加void正是它和其他函数的区别。也是构造函数的一个特点。其他的函数要么有返回值,要么为void,其实在c语言里,已经定义了void也是一种返回类型。就是返回值为空。也就是规定你这个函数的返回值必须为空,就和int就要求你的返回值必须为整数 是一样的!空也是一种类型
回复 使用道具 举报
你说的也挺有道理,我是这样理解的:
首先,构造函数和一般的函数不一样,它并不像一般的函数那样,通过调用实现一定的功能。
构造函数是在建立对象实例时,提供一定的准备和初始化,使对象实例化。
既然他们都叫函数,我想他们应该有一定的共性,所以,感觉你说的也很正确。
回复 使用道具 举报
构造器是一种特殊的方法,他没有返回值,这和返回值为void明显不同就像空字符串也是字符串一样void也是一种返回值。构造器不会返回东西你别无选择这一种规定,(new表达式确实返回了对象的引用,但是构造器本身并没有返回值)。假如有返回值并且允许你自行选择返回类型,那没必须和其他普通方法一样让编译器知道如何处理此返回值。
回复 使用道具 举报
苳眠 发表于 2012-3-6 11:34
你说的也挺有道理,我是这样理解的:
首先,构造函数和一般的函数不一样,它并不像一般的函数那样,通过调 ...

呵呵 谢谢 :handshake
回复 使用道具 举报
学习了!!!!!!
回复 使用道具 举报
也可以这么理解啊,构造方法是不能带返回值类型的,而void也是一种返回值类型,所以不能带void
void是一种返回值类型,这个在张老师的10年高新技术视频里,讲 反射 时,特别提到的,反射在获取方法的返回值类型时,void也是的
可以找出来张老师的《张孝祥Java高新技术》视频教程看一看,就那个有56个视频的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马