概述
构造方法设计的目的是对于对象的初始化。
通过提供构造方法,类的设计者可以确保每个对象都会得到初始化。
package test;
public class Test{
private String name;
private int age;
private int num;
public Test(){
System.out.println("无参构造方法");
}
public Test(String name, int age, int num){
this.name=name;
this.age=age;
this.num=num;
System.out.println("有参构造方法");
}
public static void main(String[] args){
Test TT1=new Test();
System.out.println(TT1.name+"t"+TT1.age+"t"+TT1.num);
Test TT2=new Test("BLYang",1,1);
System.out.println(TT2.name+"t"+TT2.age+"t"+TT2.num);
}
}
这个程序中,定义了重载的构造方法,类的内部变量是私有的,保障了信息的安全性。
对于无参构造方法,由于没有在方法中定义传值,内部变量没有获取外部传值,所以变量保持默认值。String类型是NULL,int类型是0.
对于含参构造方法,在方法当中传值给内部变量,实现了给变量的赋值。注意到这个方法当中的传值变量名与内部变量名一致,故要使用this关键字。
构造方法也是一种方法,但它是一种特殊类型的方法,可以用来实现成员变量的初始化操作,但是在声明时必须遵守一定的规则。
1、构造方法名必须与类名一致
2、构造方法没有返回值,但是不能理解为返回类型是void,它和void类型是完全不同的两个概念
3、构造方法在类中定义以后,当类被定义时,构造方法会被编译器默认执行。所以构造方法总是和new操作符同时出现的,也就是说不能用对象来调用构造方法。
4、在构造方法中,可以使用this关键字来调用其他的构造方法,也可以使用super关键字来调用超类的构造方法。
关于这个this关键字,它的作用是为了从方法的内部直接获取当前对象的引用。这个关键字只能在方法的内部使用,表示对“调用方法的那个对象”的引用,this调用时就代表了“这个对象”或者“当前对象”,但是如果要调用同一个类中的另外一个方法时,this是不必使用的,直接调用即可。只有在需要明确指出对当前对象的引用时,才需要使用this关键字。
让构造方法与类名相同是从两个方面考虑的,首先,由于构造方法的特殊性,它的名字必须不能与成员名称冲突,其次,调用构造方法是编译器的任务,必须让编译器能够迅速的识别出构造方法。
不含任何参数的构造方法称为默认构造方法,也称之为无参构造方法,它的作用是创建一个默认对象,如果类中没有定义构造方法,编译器会自动生成一个默认构造方法。 有时候,无参构造方法也是有意义的。比如某个类是作为父类存在的,它定义了含参的构造方法,当子类想要调用父类的默认构造方法时,因为存在含参构造方法,默认的构造方法就被编译器略去了,所以这时候无参构造方法就有了用武之地。
当通过定义构造方法进行初始化的时候,有一种特殊的构造方法,那就是单例模式下的构造方法。经典的单例模式构造方法如下:
package test;
public class Test{
private static Test test=null;
private Test(){
}
public static Test getInstance(){
if(test.equals(null)){
test=new Test();
}
return test;
}
}
单例模式下,创建的单例构造方法必须满足下面几个要求:
1、单例类只能有一个实例。
2、单例类必须自己自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式可以保证只有一个实例,并向这个类系统提供这个实例,避免在类中的对象的不一致状态。确保仅能获得一个对象,防止其他用户创建对象,这里需要将构造方法设置成private的,然后提供一个静态方法,该方法返回这个类的对象。
最后
以上就是漂亮百合为你收集整理的关于构造方法的说明的全部内容,希望文章能够帮你解决关于构造方法的说明所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复