一个java小程序的不理解?????请教高手

来源:百度知道 编辑:UC知道 时间:2024/05/25 12:36:51
完全看不懂,能加一下详细的注释吗?

class Test1 {
private static Test1 test1;
private Test1(){//为什么构造方法是私有的?

}
public static Test1 getTest1(){//这个方法是用来做什么的?
if(test1 == null){
test1 = new Test1();
}
return test1;
}
}
//每一句都不理解

public class Test111 {

public static void main(String[] args) {
Test1 t1 = Test1.getTest1();//不明白??
Test1 t2 = Test1.getTest1();
Test1 t3 = Test1.getTest1();
Test1 t4 = Test1.getTest1();

System.out.println(t1);
System.out.println(t2);
System.out.println(t3);
System.out.println(t4);
}

}

这是个单利模式,最重要的特点是构造函数是private的..他自行实力花.并且想整个系统提供这个实力.在整个应用中只有一个实力存在..

class Test1 {
private static Test1 test1;
private Test1(){//为什么构造方法是私有的?
//因为构造方法私有..别人就不能用new创造一个对象
//比如这行写double r;r=java.lang.math.random();// 产生一个随机的double行的数.
// System.out.println(r);
}
public static Test1 getTest1(){//这个方法是用来做什么的?
if(test1 == null){
// 在这个方法里.构造出一个对象来。.向整个系统提供这个实力
//这里的返回类型是Test1型..也就是说返回的是test1的一个对象..
test1 = new Test1();
}
return test1;
}
}
//每一句都不理解

public class Test111 {

public static void main(String[] args) {
Test1 t1 = Test1.getTest1();//不明白??
Test1 t2 = Test1.getTest1();
Test1 t3 = Test1.getTest1();
Test1 t4 = Test1.getTest1();
// 这里的4个都是调用了那个自行实力化的方法的。.由于那个方法是static的.所以可以用类名.方法直接调用.
//如果构造方法不是private的。这里应该有4个实例.那么4个打印出来的随即数应该是不一样的。.
//但由于构造器是私有的。.上面调用的是getTest1那个方法创建的实例.所以打出来的4个数其实都是同一个。也就是相同的。.

System.out.p