构造方法(也称为构造器)
1.作用:在构造类的对象时,将实例域初始化为所希望的初始化值。
2.特点:
1.构造方法总是伴随着new操作符的执行而被调用
2.构造器与类名相同
3.每个类可以有一个以上的构造器,即构造方法也可以重载
4.构造器没有返回值
5.可以有0个、1个、多个参数
6.如果在编写一个类时没有编写构造器,那么系统就会提供一个无参构造器,这个构造器将所有的实例域都设置为默认值。
int,short,long,byte类型设置为0;
char类型设置为'\0'
float double类型设置为0.0;
boolean 类型设置为false;
对象变量设置为null。
7.如果在编写一个类时提供了至少一个构造器,系统提供的默认无参构造器就会失效。
如果想提供一个所有域都被赋予默认值的构造方法,可以使用以下方式
public 类名(){
}
8.构造器还可以调用同类的另一个构造器
在构造方法中添加形如this(...);的语句 ,
注:对this的调用必须是构造器中的第一个语句
3.格式:
public 类名(参数列表){
方法体
}
初始化块
在一个类的声明中,可以包含多个代码块。只要构造该类对象,这些块就会被执行。
特点:这些代码块先于构造器执行,且按类声明中出现的次序依次执行
class Commodity
{
//为了更方便的看到效果,使用了public(不推荐)
public String name;
public double price;
public int id;
public Commodity(int id)
{
//System.out.println("执行一个参数的构造方法");
this.id=id;
}
public Commodity(int id,String name)
{
this(id);
//System.out.println("执行两个参数的构造方法");
this.name=name;
}
public Commodity(String name,double price,int id){
this(id,name); //调用同类的另一个构造器
//System.out.println("执行三个参数的构造方法");
this.price=price;
}
//初始化块
{
//System.out.println("执行第一个初始化块");
price=0.0;
}
{
//System.out.println("执行第二个初始化块");
id=100;
name="苹果";
}
}
class ConstructDemo
{
public static void main(String[] args)
{
Commodity c1=new Commodity("西瓜",12.4,5);
System.out.println(c1.id);
System.out.println(c1.price);
System.out.println(c1.name);
Commodity c2=new Commodity(5);
System.out.println(c1.id);
System.out.println(c1.price);
System.out.println(c1.name);
}
}