构造函数没有返回类型,为什么不加void

gongwenchu 2005-05-09 11:20:00
构造函数没有返回类型,为什么不加void
...全文
3469 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fitLion 2005-05-10
  • 打赏
  • 举报
回复
对,我也觉得flyluode的解释比较好。构造函数的返回值就是构造好的类的实例。你是没有选择的。
midthinker 2005-05-10
  • 打赏
  • 举报
回复 1
以下解释摘自<<Think in java>> 中文版第2版,
“构造函数是一种很特殊的函数,因为他没有返回值。这和‘返回值为void’有极大的差别。返回void时,一般函数并不返回任何东西,但是一般的函数能够选择是否要返回些什么东西。构造函数则绝对不返回任何东西,而且你也没有任何选择。如果它有一个返回值,而且你有权利选择你自己的返回型别(return type),编译器势必得通过某种方式来知道如何处理那个返回值。”

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

@.@||~
cuilichen 2005-05-10
  • 打赏
  • 举报
回复
呵呵,看看
harbor1981 2005-05-10
  • 打赏
  • 举报
回复
学习
frozenleo 2005-05-10
  • 打赏
  • 举报
回复
为什么叫构造函数呢?我想它本身就是一种特殊的函数,你完全可以认为规定就是这样写构造函数的,而编译器也是基于这种规定来区分是否是构造函数,因为构造函数有它特殊的作用,编译器必须找到它,……以上是我的愚见,希望能给你带来点意思!
happyegg 2005-05-10
  • 打赏
  • 举报
回复
学了这么久的程序,没有考虑过这个问题...
觉得flyluode的解释比较好
MARS.nEIL 2005-05-10
  • 打赏
  • 举报
回复
学习...构造函数前总之不能写任何返回类型,包括空类型void
flyluode 2005-05-10
  • 打赏
  • 举报
回复 3
构造方法有返回类型----该类的类型
如:A a=new A();
----------------------------
构造方法对返回类型没有选择权,也就是说不加任何返回修饰符,以示与其他的方法的区别
   --void 表示我可以控制它返回类型,就是不让它返回嘛,显然有选择权了
这样编译器才发现,喔~~,原来这个就是构造方法,然后被编译器加上默认的类返回类型
-----------------------------------------
如果你硬要加上返回类型的话,就不是构造方法啦
public class A {
public int A() {
System.out.println("OK");
return 0;
}
public static void main(String[] args) {
new A();
}
}
------------------
上面的程序当然不会打印OK啦
因为编译器把public int A(){}当成成员方法,而不是构造方法

yuziyu 2005-05-10
  • 打赏
  • 举报
回复
构造函数返回的是对对象的引用,相当于C里面的指针,不过在Java中没有这样提罢了
jnzsk 2005-05-10
  • 打赏
  • 举报
回复
learning!
dj0517 2005-05-10
  • 打赏
  • 举报
回复
不错~~分析的很到位。。。帮顶!!
tangqs 2005-05-10
  • 打赏
  • 举报
回复
我觉得这只是一种习惯,也许最开始开发面向对象的语言的人认为这样可以把构建器和普通函数区分开来.

就像鲁迅先生说的那样"世上本没有路,走的人多了,也就成了路".
oyljerry 2005-05-10
  • 打赏
  • 举报
回复
没有返回值,好让编译器识别
topglory 2005-05-10
  • 打赏
  • 举报
回复

因该主要是为了让编译器识别吧。
xiangqianchong 2005-05-09
  • 打赏
  • 举报
回复
void 其实有返回值,但是函数不返回任何东西,一般函数能够选者要返回什么东西

构造函数是没有返回值,也就是说绝不能返回任何东西,并且你不没有任何选者,假设构造函数有返回值,编译器应该知道能够处理哪个返回值,这不行,因为构造函数在创建对象时调用
majcos 2005-05-09
  • 打赏
  • 举报
回复
A constructor is used in the creation of an object that is an instance of a class:
In all other respects, the constructor declaration looks just like a method
declaration that has no result type.

Constructor declarations are not members.

看下面的例子:
public class TestConstructor {

public static void main(String[] args) {

A a = new A();
System.out.println(a.x);
a.A();//一般方法调用
System.out.println(a.x);
}

}

class A{
void A(){
x=10;
//return;
}
int x;
}

输出:
0
10

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧