JAVA构造方法
1.在JAVA语言中,构造方法也叫做构造器,它是一种比较特殊的方法,主要用于创建实例(也就是对象)的时候进行初始化操作。
Person p=new Person();
这里的Person就是一个构造方法,构造方法是默认不可见的。
在没有手动定义构造方法的时候,采用的是系统为操作类提供的一个无参数的默认的构造方式(这就是为什么new一个对象后面要加上()的原因就是要调用系统默认的无参的构造方法),它的形式就是public 类名()[]。
class Box{ //构造方法没有返回值
/*
定义了一个构造方法,对Box进行了初始化
*/
public int width;
public int height;
/*
定义了一个带有参数的构造方法,用于接受外界传来的初始化参数
*/
public Box(int width,int height){
this.height=height;
this.width=width;
}
然后我们new一个对象给构造方法传值
public static void main(String[] args) {
Box ar=new Box(10,20);
System.out.println("width="+ ar.width);
System.out.println("height"+ ar.height);
输出的结果为
此时我们又想new一个新的对象,结果发现系统提示报错
为什么会这样???
那是因为在没有定义构造方法之前,这种方法是可以被使用的。但是此时已经定义了一个带有参数列表的构造方法,然后这种方法不适用了。在java语言中,一旦我们自己已经添加了类的构造方法,java就不会在添加默认的无参数的构造方法了,所以上述情况会报错。
解决办法是什么???
自己手动添加一个无参的构造方法,此时自己定义的构造方法就等同与系统默认自带的构造方法,只是在自己创建这个构造方法之前,系统默认的构造方法是不可见的,而且用户自己创建了这个构造方法之后系统默认的无参的构造方法就失效了
这里就不会报错啦!
同时构造方法之间也可以调用
public Box(int width){
this.height=height;
}
public Box(int width,int height){
this(height);
this.width=width;
}
如上,如果一个构造方法包含另一个构造方法的时候,之间是可以被互相调用的,同时使用this关键字去调用另一个构造方法的时候,被构造的方法必须放在此方法的第一行。
构造方法有哪些特性?
1.名字与类名相同;
2.没有返回值,但不能用void声明构造函数;
3.生成类的对象是自动执行,无需调用;
4.建议将构造方法的访问修饰用public修饰,同时建议保留原保留默认构造方法的写法。