黑马程序员-构造函数和构造代码块

------- android培训java培训、期待与您交流! ----------


构造函数的特点是与类的名字相同,不用写返回类型,也不用写return语句。

每个类中都一个默认不带参数的构造函数,如果程序员自己定义了构造函数,那么系统就不再给建立空参数的构造函数了。

构造函数是用来给对象初始化的,对象一建立就运行与之对应的构造函数。

通过不同参数的构造函数,可以选择类不同的初始化方式


构造代码块写在类{}之中,他优先于构造函数运行,不管类的初始化方式是怎样的,他都会运行,所以他是对类所有的对象进行初始化


public class Person {

	private int name;
	private int age;

	public int getName() {
		return name;
	}

	public void setName(int name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	
	Person(){
		System.out.println("name=" + name + ",age=" + age);
	}
	Person(String name){
		System.out.println("name=" + name + ",age=" + age);
	}
	Person(String name,int age){
		System.out.println("name=" + name + ",age=" + age);
	}
	{
		System.out.println("Person Run");
	}
}
主函数调用
Person p1 = new Person();
Person p2 = new Person("zhangsan");
Person p3 = new Person("lisi",23);
运行结果

Person Run
name=0,age=0
Person Run
name=zhangsan,age=0
Person Run
name=lisi,age=23

注意:

1、如果删除了Person(){}这个构造函数,就会报错,由于已经自定义了带参数的构造函数所以,系统不会自动添加无参构造函数

2、{}构造代码块中的内容优先于构造函数运行,并且每个对象初始化都会运行

3、如果构造函数Person(){}前加了private修饰,那么Person类无法通过无参方式建立对象

4、构造函数间调用构造函数不能用Person(name),而是用this(name)


提升部分练习:

class Person{
	Person(){
		System.out.println("a");
	}
	static{
		System.out.println("b");
	}
	{
		System.out.println("c");
	}
}
class PersonDemo{
	static{
			System.out.println("d");
	}
	public static void main(String[] args){
		Person p = new Person();
		System.out.println("e");
	}
}

运行结果是:

d
b
c
a
e
注意:

1、static{}表示静态代码块,随着类的加载而执行,优先于构造代码块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值