您的位置:首页 > 编程语言 > Java开发

JAVA_SE基础——30.构造代码块

2015-09-22 22:01 295 查看
黑马程序员入学blog...

构造代码块作用:给所有的对象进行统一的初始化。

问题:要求每个小孩出生都会哭,这份代码有两个构造函数,如果需要每个小孩出生都要哭的话,那么就需要在不同的构造函数中都调用cry()函数,但是这样子的话造成了代码重复问题,那么怎么解决呢?构造代码块。

class Perosn{
private int id;//私有化int型变量id

private String name;//私有化String型变量name

private int age;//私有化int型变量age

{
cry();// 每个Person对象创建出来都会执行这里的代码
}

public Perosn(){
cry();
}
public Perosn(int id, String name, int age) {//为变量id,name,age初始化属性
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {//访问Id
return id;
}
public void setId(int id) {//设置id
this.id = id;
}
public String getName() {//访问name
return name;
}
public void setName(String name) {//设置name
this.name = name;
}
public int getAge() {//访问age
return age;
}
public void setAge(int age) {//设置age
this.age = age;
}

public void cry(){//哭
System.out.println("哇哇哇....");
}

}


P.S.

1:给对象进行初始化。对象一建立就运行并且优先于构造函数。

2:构造代码块和构造函数的区别,构造代码块是给所有对象进行统一初始化, 构造函数给对应的对象初始化。

3:构造代码块的作用:它的作用就是将所有构造方法中公共的信息进行抽取。

例如孩子一出生统一哭

我们来看个完整的实例:
class Boy {

String name;
int age;
String gender;
// 构造代码块,给所有对象进行初始化。
{
System.out.println("哭。。。");
}

Boy() {
System.out.println("无参构造被调用中");
}

Boy(String n, int a, String g) {
name = n;
age = a;
gender = g;
System.out.println("有参构造被调用中");
}

void run() {
System.out.println("跑...");
}

}

class Demo {

public static void main(String[] args) {

Boy b = new Boy();

Boy b2 = new Boy("jack", 1, "男");

}
}
运行结果:

哭。。。

无参构造被调用中

哭。。。

有参构造被调用中

只要和构造函数区分开来并且记住它们两的核心作用就好了:

构造代码块:构造代码块是给所有对象进行统一初始化。

构造函数:构造函数给对应的对象初始化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息