一,private修饰构造函数时可以用于构造单例模式
二,在构造函数在可以调用另外的构造函数
一,单例模式
构造方法可以由protected,private,public修饰;当用private修饰时,外部无法创建该类的实例,而通过一个接口来返回
该类的唯一静态实例。确保系统中只有一个该类的实例,可用于频繁被使用的对象和系统组件。
class Demo{
private Demo() {
System.out.println("Test1.Demo1()");
}
private static Demo test=new Demo(); //静态成员变量在类加载时会构建
public static Demo getInstance() {
if(test==null)
test=new Demo();
return test;
}
public static void creatTon() {
System.out.println("调用静态方法,初始化类会加载静态成员变量");
}
}
public class Singleton{
public static void main(String argv[]){
Demo.creatTon(); //静态成员变量的加载先于静态方法调用
}
}
单例模式中,又可以做延时加载。因为在JVM加载类时,此时该对象并不一定会用到,为了提高加载速度,可以在使用该实例才通过静态方法返回实例。
private static Demo test=null;
二 在构造函数中可以通过this(参数)来调用其他的构造函数。此时this()和super()在放在构造函数的第一行而且不能同时
出现this和super;
public class Test extends A{
public Test() {
this("str"); //本句之上隐藏了super()
}
public Test(String str) {
System.out.println("B的实例");
}
{
System.out.println("B");
}
static {
System.out.println("B static");
}
public static void main(String argv[]){
Test test=new Test();
}
}
class A{
static {
System.out.println("A static");
}
{
System.out.println("A");
}
public A() {
System.out.println("A的实例");
}
}