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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯伟超 中级黑马   /  2012-12-29 23:23  /  2227 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中函数的定义
    修饰符  返回值类型  函数名(参数列表)
    {
            执行语句;
        return 返回值;
      }
对比函数的定义的格式,那么构造函数为什么不是这样的书写格式呢。
还有如果说找出一个类中的函数有哪些?那构造函数算不?这里真是感到很迷惑?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

13 个回复

正序浏览
构造函数与普通函数不同,他是特殊的,这里主要几个区分点你要注意
a) 构造方法的名字必须与类名完全一致(包含大小写)
b) 构造方法没有返回值,连void也不能出现。
c) 如果在定义一个类的时候,没有为类声明构造方法,那么Java编译器会自动为类添加一个没有参数且方法体为空的构造方法(默认的构造方法)
d) 如果在定义一个类的时候,为类声明了构造方法,那么Java编译器就不会再为类添加构造方法了。
e) 不能显式调用类的构造方法,构造方法通常是通过new关键字隐式调用
回复 使用道具 举报
你可以想象成构造函数一般是用来给类初始化,就好像是衣服,不带参数的就是上衣, 带一个参数就是裤子。而自定义的那些方法就好比人身体的一部分,格式比较固定。  
回复 使用道具 举报
对比函数的定义的格式,那么构造函数为什么不是这样的书写格式呢。?

构造函数不需要返回值,因为它只是实例化类的时候初始参数用的,不需要被调用

还有如果说找出一个类中的函数有哪些?那构造函数算不?这里真是感到很迷惑?

算! !  构造函数和一般函数都是函数  亲兄弟.    不过java中不叫函数..叫方法.

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1

查看全部评分

回复 使用道具 举报
冯伟超 发表于 2012-12-29 23:49
如果不需要返回值那为什不使用void呢?还有为什么构造函数的函数名必须和类名要一致呢? ...

void是返回了一个空值,而这不需要,而构造函数跟普通函数不同,太特殊,所以特别定义了个,这只是一种定义,如同1这个符号为什么代表一个,2为什么代表两个,如果当时定义说1这个符号代表两个,那么现在1就是2,一种人为的定义,设定好的,大家然后都遵守这规则,没有为什么,我就是定义。什么叫我,什么叫是,什么叫定义,为什么我代表我,因为过去人说“我”这个符号就是表示你自己,所以后来这个字就表示你自己了。
回复 使用道具 举报
构造函数特点:函数名与类名同;构造方法在创建对象时自动执行;没有返回类型,也没有返回值;一个类中可以建多个构造函数。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
李尧 高级黑马 2012-12-30 09:05:32
9#
清冰 发表于 2012-12-30 00:18
如果构造函数和类名不一致,那么new对象的时候,jvm该去找哪个函数去new对象呢? ...

构造函数名和类名不一致那就不是构造函数了吧..那不成一般方法了...
回复 使用道具 举报
构造函数的作用是在创建对象时,系统自动调用它来给所创建的对象初始化。 构造函数的特点: 构造函数是一种成员函数,他的说明在类体内,它的函数体可写在类体内,也可以写在类体外。  构造函数是一种特殊的成员函数,该函数的名字与类名相同。定义和说明构造函数时,不必指明函数的类型。 构造函数可以有一个参数或多个参数,也可以没有参数。  构造函数可以重载。  构造函数用于创建对象时的系统自动调用,也可以在程序中调用构造函数创建无名对象

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
清水 中级黑马 2012-12-30 00:18:36
7#
如果构造函数和类名不一致,那么new对象的时候,jvm该去找哪个函数去new对象呢?
回复 使用道具 举报
张胜格 发表于 2012-12-29 23:36
首先构造函数的书写格式属于语法格式,没有什么为什么,其次我认为构造函数也是函数,只是比较特殊,主要特 ...

晕 你的答案,如果真是按照你的说法,那学习java就没必要向深层里学了。只要碰到问题:我的借口就是语法格式了。要是这样,直接把API打印成书,直接背书就行了,大哥!
回复 使用道具 举报
马志军 发表于 2012-12-29 23:30
给类进行初始化,不需要返回值,其它像修饰符,参数它也都可以有。
构造函数只在new对象时用一次,一个类中 ...

如果不需要返回值那为什不使用void呢?还有为什么构造函数的函数名必须和类名要一致呢?
回复 使用道具 举报
首先构造函数的书写格式属于语法格式,没有什么为什么,其次我认为构造函数也是函数,只是比较特殊,主要特殊在它的使用方式和命名方式上。其实这里面好多都是语法问题不必过多的深究。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
算吧,只是它和一般函数有些区别罢了,凤姐也是人啊
回复 使用道具 举报
本帖最后由 马志军 于 2012-12-29 23:32 编辑

给类进行初始化,不需要返回值,其它像修饰符,参数它也都可以有。
构造函数只在new对象时用一次,一个类中的函数有哪些,这得看怎么说了,构造函数也是函数,只是比较特殊

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

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