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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 詹季春 黑马帝   /  2011-7-26 16:21  /  6726 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

:lol 帮大家复习知识:lol 都来讨论讨论
如下[code=java]public Person(String name , int age ){
      this.name = name ;
      this.age = age ;
}[/code]
[ 本帖最后由 詹季春 于 2011-07-26  16:22 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
admin + 2 问得不错!

查看全部评分

10 个回复

倒序浏览
黑马网友  发表于 2011-7-26 16:42:58
沙发
构造器是一种特殊类型的方法,因为他没有返回值。这与返回值为空(void)明显不同。对于空返回值,尽管方法本身不会自动返回什么,但仍然可以选择让他返回别的东西,构造器则不会返回任何东西,你别无选择(new表达式确实返回了对新建对象的引用,但构造器本身并没有任何返回值)。假如构造器具有返回值,并且允许人们自行选择返回类型,那么势必得让编译器知道该如何处理此返回值。——————转自《Java编程思想》

评分

参与人数 1技术分 +2 收起 理由
admin + 2 答到边都有分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-26 16:43:56
藤椅
Java对象都是在堆中构造的,构造方法总是伴随着new操作符一起使用,那我觉得构造函数再有返回值就有点说不通了,如果有返回值,它返回去给谁?构造方法只是在内存中为对象开辟了一块新"地方"。以下陈述不是在回答问题,只是在复习一下。:lol
构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)构造方法不能由编程人员调用,而要系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 答到边都有分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-26 16:58:54
板凳
因为编译器要和别的方法区别。
回复 使用道具 举报
黑马网友  发表于 2011-7-26 18:09:10
报纸
Java的构造函数没有任何返回值,其返回值并没有什么实际的意义。创建一个对象用new运算符来执行,例如Student student=new Student ();此时系统自动调用Student 类的构造函数,然后返回一个指向对象地址的一个引用。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答到边都有分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-27 16:59:19
地板
:lol 貌似都没有一个确切的答案啊。
回复 使用道具 举报
黑马网友  发表于 2011-7-27 17:05:46
7#
构造函数没有返回值,主要是为了区分构造函数和其它方法。 可以尝试在构造函数前加上void,就会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答到边都有分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-27 18:31:34
8#
因为构造器的返回值类型总是[color=Red]当前类[/color]。所以,构造器不能申明返回值类型,也不能使用void申明构造器没有返回值。[code]//请看以下代码
public class Person {
       
        public static void main(String[] args){
                //定义一个Person类型的变量
                Person p = new Person();//通过new关键字调用Person类的构造器,返回一个Person实例,并将该实例赋给变量p
        }
}[/code]

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答到边都有分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-27 18:51:17
9#

回复 楼主 的帖子

Java的构造函数没有任何返回值,其返回值无实际的意义,目的是为了区分一般的方法
回复 使用道具 举报
谢谢楼上各位高手的解答,我明白了。
回复 使用道具 举报
看来应该看一下java编程思想了666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马