构造方法
⼀种特殊的方法。
创建对象时用来初始化对象,每次使用new 创建对象的时候,就会使用构造方法。
与类具有相同的名称,但是没有返回值,Java会⾃动为每个类提供⼀个默认构造方法。
如果自己定义了构造方法,就不再使用默认构造方法,如果没有显示的写出默认构造方法, 则会消失。
可以有多个构造方法,只要参数不同就可以。
构造方法之间可以相互调用,使用this(参数);
如果构造函数之间互相调用,务必写在方法第一行。且不可以递归调用。
(C/C++中叫函数,Java中叫方法,作用是一样的。)
(Java中没有析构函数,由虚拟机回收死亡对象。)
自己不定义构造方法,系统自动生成一个默认的空的构造方法。
class A{}
public class B {
public static void main(String [] args)
{
A a = new A();
}
}
自己定义构造方法,系统不会再生成构造方法。
class A {
private int x;
private int y;
public A(int x){
this.x = x;
}
public A(int x, int y){
this(x);//可以互相调用,但不能形成闭环。
this.y = y;
}
}
public class B {
public static void main(String [] args)
{
A a = new A();//报错,Cannot resolve constructor 'A()',没有定义无参构造方法。
A a1 = new A(1);
A a2 = new A(1,2);
}
}
构造函数的修饰符
public 用的最多,用来创建对象。
private 私有化构造函数,不给外部创建对象,比如⼯具类,或者单例设计模式。
default 默认的话,只能在当前包里面使用new 创建对象,几乎不用。
单例模式:
class A {
private static A a = new A();
private A(){}//私有构造方法。
public static A getA() {
return a;
}
}
public class B {
public static void main(String [] args)
{
A a = new A();//报错,'A()' has private access in'A',私有访问权限。
}
}