2.构造方法

构造方法

1.为什么需要构造方法?

因为使用new关键字创建对象的本质是调用constructor(构造器)在堆内存中开辟内存空间来实例化对象。

Student s1 = new Student();//注意是 Student(),是一个方法名

2.怎么定义构造方法?

[修饰符列表] 构造方法名(){
          //方法体
}

其中,1. 构造方法名必须和类名一致

2. 系统会默认产生一个无参构造方法(缺省构造器)

3.当定义了有参数的构造方法时,要使用缺省构造器必须显式定义

4.无参数的构造器和有参数的构造器本质上是方法的重载。

2.构造方法的作用:

1. 用来创建实例化对象

2. 实现对象的属性初始化赋值

3.构造方法怎么调用?

使用new关键字调用

思考:实例变量的默认初始化是在什么时候进行的?

是在类加载的时候吗?显然不是。类加载的时候对象还没有实例化,也就不存在实例变量,无法初始化。

是在构造方法中进行默认初始化的吗?

是的,使用new关键字调用构造方法时,构造方法中会对 对象的实例变量进行初始化。若没有手动赋值则会赋系统默认值

  1. 定义一个Vip类,其中包含四个构造方法:
public class Vip{
	//会员号
	int id;
	String name;
	String birth;
	boolean sex;
	
	public Vip(){};
	public Vip(int id,String name){
		this.id = id;
		this.name = name;
	}
	public Vip(int id,String name,String birth){
		this.id = id;
		this.name = name;
		this.birth = birth;
	}
	public Vip(int id,String name,String birth,boolean sex){
		this.id = id;
		this.name = name;
		this.birth = birth;
		this.sex = sex;
	}

}

2.测试类:

public class ConstructorTest{
	public static void main(String[] args){
		Vip v1 = new Vip();
		System.out.println(v1.id);//0
		System.out.println(v1.name);//null
		System.out.println(v1.birth);//null
		System.out.println(v1.sex);//false
		System.out.println("===========================");
		Vip v2 = new Vip(222,"张三");
		System.out.println(v2.id);//222
		System.out.println(v2.name);//"张三"
		System.out.println(v2.birth);//null
		System.out.println(v2.sex);//false
		System.out.println("===========================");
		Vip v3 = new Vip(333,"李四","2020");
		System.out.println(v3.id);//333
		System.out.println(v3.name);//"李四"
		System.out.println(v3.birth);"2020"
		System.out.println(v3.sex);//false
		System.out.println("===========================");
		Vip v4 = new Vip(444,"王五","2021",false);
		System.out.println(v4.id);//444
		System.out.println(v4.name);//"王五"
		System.out.println(v4.birth);//2021
		System.out.println(v4.sex);//false
	}
}

综上可以看出,构造方法可以对实例变量初始化,没有手动赋值的会自动赋系统默认值。

思考:

  1. 构造方法有什么用?

  2. 构造方法怎么定义?语法是什么?

  3. 构造方法怎么调用?使用哪个运算符?

  4. 什么是缺省构造器?

  5. 怎么防止缺省构造器丢失?

  6. 实例变量是在类加载的时候初始化的吗?实例变量在什么时候初始化?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值