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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 山水游客 中级黑马   /  2012-6-18 19:28  /  5406 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙胜录 于 2012-6-18 23:05 编辑

在定义构造方法时,构造方法没有返回值,但这与普通没有返回值的方法不同,普通没有返回值的方法使用public void method(){} 形式定义,
但是为什么构造方法不需要void关键字进行修饰,直接以public 类名(){} 呢?

14 个回复

倒序浏览
构造函数是为了给对象进行初始化而存在的.
java在定义构造函数的时候就明确了构造函数的3个特点:
1,函数名与类名相同;
2,不用定义返回值类型(注意:void也是一种返回值类型,代表着没有具体结果返回的情况);
3,不可以写return语句;
回复 使用道具 举报
这我总结的构造函数的特点:参考一下,欢迎指正,添加~!

1.构造函数:函数名与类名相同
                   没有返回值类型,void也没有
                   不能写return语句

2.对象一建立就会调用与之对应的构造函数。

3.当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数,类中自定义了构造函数后,默认的构造函数就没有了。

4.构造函数和一般函数在写法上不同,运行上不同。构造函数是在对象一建立就运行给对象初始化,而一般方法是对象显式调用才执行。

5.一个对象建立,构造函数运行一次,而一般方法可以被对象调用多次。

6.分析事物时,该事物具备一些特性或者行为,就将这些内容定义在构造函数中

7.构造函数可以私有化~(但是全部private私有化后就不能创建对象了)
回复 使用道具 举报
就是用于区别构造方法和普通方法的,这就是原因:L
回复 使用道具 举报
构造方法是为类的数据成员赋值,不需要返回值,也不会有返回值,直接   类对象名.成员名  你就能得到这个值了;
一般的方法,方法方法,故名思之,就是通过一定的算法得到某种结果或者说是结论,你通过这个方法运算后,你可以选择在函数体里面直接打印出结果,这就是void的方法,当然,你也可以将值返回,形如int 、double 的方法
回复 使用道具 举报
首先你要明白构造方法是干嘛的 ?
主要用来在创建对象时初始化对象,他是给刚刚建立的对象赋初值的,要返回值干什么?返回给谁呢?返回给他刚刚赋值的初始化的对象
回复 使用道具 举报
首先你要明白构造方法是干嘛的 ?
主要用来在创建对象时初始化对象,他是给刚刚建立的对象赋初值的,要返回值干什么?返回给谁呢?返回给他刚刚赋值的初始化的对象
回复 使用道具 举报
构造方法命名规则:方法名称与类同名,无返回值,不能被static、final等修饰。
创建对象的时候才需要调用构造方法,用以初始化对象同时也为需要的变量初始化数据。普通的方法之所以有返回值是在对象已经存在之后,对象本身所具备的方法操作,需要被自身的其他方法或者其他对象的方法调用。jvm负责完成对象的生成,假如构造方法与普通方法一样有返回值,那么只有jvm能获取这个返回值,因为对象是jvm创建出来的。jvm没有获取返回值的意义,所以构造方法就不需要定义返回值类型。
回复 使用道具 举报
胡卿 中级黑马 2012-6-18 22:17:37
9#
构造函数在对象建立时就被直接调用:
作用:用于给对象进行初始化。

构造函数和一般函数区别之一。

一般函数是用于定义对象应该具备的功能。
而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。

区别之二:
构造函数是在对象建立时被调用。给对象初始化。
一般函数是对象建立后,当对象调用该功能时才会执行。




构造函数细节:
        当类中没有定义构造函数时,系统会指定给该类加上一个空参数的构造函数。这个是类中默认的构造函数。
        当类中如果自定义了构造函数,这时默认的构造函数就没有了。

在一个类中可以定义多个构造函数,以进行不同的初始化。
多个构造函数存在于类中,是以重载的形式体现的。因为构造函数的名称都相同。
回复 使用道具 举报
  
大概总结了一下构造方法的特点,如下:

1.每个类中都肯定有构造方法,对对象做初始化工作,即使程序员未定义构造方法,编泽系统都会给出一个不带参数、没有语句内容的默认构造方法,它只是创建一个空对象而不会完成任何操作。

2.     书写格式
构造方法:   类名(参数列表){}
    注意:没有返回类型,没有返回值。
    调用:  类名 对象名 = new 构造方法(参数列表);

成员方法:  返回类型 方法名(参数类表){}
     可以返回一个值,或对象。
       调用:  对象名.方法名(参数列表);

3.构造方法不能有由以下非访问性质的修饰:abstract,final,native。
只能由public、protected、private修饰
其中,protected 只有子类可用
         private 常见于单例模式中

4.一个类可以重载多个构造方法,在多个构造方法之间是可以产生调用关系。
在一个构造方法中只能调用一次一个其它的本类构造方法,且必须将该调用语句放在该构造方法的第一句。

5.子类构造方法创建对象时,会自动调用其父类不带参数的构造方法,即隐去了“super()”;
若想调用父类有参数的构造方法,则必须在子类构造方法第一句写上super(参数),此时不能加“this()”语句。



回复 使用道具 举报
1、方法有返回类型,方法名小写,不能和类名相同;构造方法没有返回类型,void也不行,名与类名相同。
2、构造方法是初始化对象的重要途径,所以就算你给一个类没有定义构造方法,方法在这个类的加载得时候,会自动提供一个没有参数的构造方法。所以,常见得 Student s=new Student();那么,s这个实例,是通过构造方法初始化的;而普通方法不行
3、他们运行顺序不同。一个类在初始化的时候,例如People是Student的父类,有构造方法 public PeoPle(){}那么,当实例化Student p=new Student()得时候,父类的构造方法会隐式执行(你可自己敲代码尝试,父类构造方法中写个输出语句:例如System.out.println("父类构造方法"))。你会发现,没有调用任何父类,也没有实例化父类,但是构造方法却执行了。
4、方法仅仅是类成员,构造方法也是类成员,但是,构造方法有对类属性得初始化的功能。所以,常见到 public PeoPle(String name){this.name=name}或者 public PeoPle(){name="wangsan",age=14},完成了对People类属性name或者age的初始化
回复 使用道具 举报
返回值为void与没有返回值是两回事。构造函数没有返回值,主要是为了区分构造函数和其它方法。其实,你可以尝试在你的构造函数前加上void,你会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。
回复 使用道具 举报
本帖最后由 耿鑫 于 2012-6-19 13:48 编辑

构造方法又叫构造器,何为构造器,就是为了创建对象,还有一个重要的作用是给成员变量初始化,在类加载的时候,系统为成员变量和对象分配空间,但是默认值都是空值,对于基础数据类型是0或者是false,对于引用类型是null;接下来执行构造方法(构造代码块我就不说了),这个时候的对象才会被初始化。所以构造方法和有没有返回值没有关系。因为它的工作就是初始化。另外不一定构造函数是public的,当你学到单例模式的时候你会发现,构造函数也可以是private的,当然这个是后话了。
回复 使用道具 举报
构造方法的主要作用就是创建对象的时候调用,它和普通方法的作用不一样。我觉得没有返回值的作用就告诉编译器哥们儿是构造方法,只有要创建对象的时候才能调用我。
回复 使用道具 举报
构造函数和一般函数区别:
1、在写法上有不同。构造函数的函数名与该类的类名相同,而一般函数的函数名可以用符合规则的任意字符命名。构造函数不用定义返回值类型(注:void也是返回值类型),而一般函数要定义返回值类型,若没有返回结果,也要定义返回值类型void。所以构造函数不用写return语句。
2、在运行上也有不同。构造函数是在对象一建立就运行,给对象初始化。而一般函数是对象调用才执行,是给对象添加对象具备的功能。一个对象建立,构造函数只运行一次,而一般函数可以被该对象调用多次。
3、调用方式不同。构造函数使用new调用,是给成员变量赋值,一般函数使用 对象.方法( )调用,是实现形参与实参之间的调用。

构造函数不用void,是因为构造函数的作用是给对象初始化,就是给一个对象赋值,对象一建立就在堆内存中存在了,同时也会加载相应的构造函数,把参数赋值给对象中的成员,相当于返回了一个对象,给对象初始化值,所以不用返回值类型void
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马