Java中构造函数是什么?它应该具体怎么用呢?

来源:百度知道 编辑:UC知道 时间:2024/06/02 21:49:13
给我举个例子嘛,大哥,这样说太抽象了

构造函数就是在实例化一个对象时用的,例如由个leiA,LeiA的构造函数和LeiA同名,而且不能有返回值,连void也不可以.你用LeiA a;只是声明一个空的对象a,并没有为a分配内存地址,这个时候你引用a,将会得到a可能尚未初始化的错误.当你用LeiA的构造函数,例如public LeiA()时:LeiA a=new LeiA();这时就为a分配了内存空间,可以应用a了.说到底,构造函数就是为了初始化类对象用的.

是构造方法,不是构造函数,后者是C++的概念

首先要注意的是Java的构造器并不是函数,所以他并不能被继承,这在我们extends的时候写子类的构造器时比较的常见,即使子类构造器参数和父类的完全一样,我们也要写super就是因为这个原因。
构造器的修饰符比较的有限,仅仅只有public private protected这三个,其他的例如任何修饰符都不能对其使用,也就是说构造器不允许被成名成抽象、同步、静态等等访问限制以外的形式。
因为构造器不是函数,所以它是没有返回值的,也不允许有返回值。但是这里要说明一下,构造器中允许存在return语句,但是return什么都不返回,如果你指定了返回值,虽然编译器不会报出任何错误,但是JVM会认为他是一个与构造器同名的函数罢了,这样就会出现一些莫名其妙的无法找到构造器的错误,这里是要加倍注意的。

在我们extends一个子类的时候经常会出现一些意想不到的问题,我在这里说一些和构造器有关的。
首先说一下Java在构造实例时的顺序(不讨论装载类的过程)
构造的粗略过程如下
1、分配对象空间,并将对象中成员初始化为0或者空,java不允许用户操纵一个不定值的对象。
2、执行属性值的显式初始化(这里有一点变化,一会解释,但大体是这样的)
3、执行构造器
4、将变量关联到堆中的对象上

介绍一下准备知识,以备一会来详细说明这个的流程
this() super()是你如果想用传入当前构造器中的参数或者构造器中的数据调用其他构造器或者控制父类构造器时使用的,在一个构造器中你只能使用this()或者super()之中的一个,而且调用的位置