黑马程序员入学blog...
构造代码块作用:给所有的对象进行统一的初始化。
问题:要求每个小孩出生都会哭,这份代码有两个构造函数,如果需要每个小孩出生都要哭的话,那么就需要在不同的构造函数中都调用cry()函数,但是这样子的话造成了代码重复问题,那么怎么解决呢?构造代码块。
P.S.
1:给对象进行初始化。对象一建立就运行并且优先于构造函数。
2:构造代码块和构造函数的区别,构造代码块是给所有对象进行统一初始化, 构造函数给对应的对象初始化。
3:构造代码块的作用:它的作用就是将所有构造方法中公共的信息进行抽取。
例如孩子一出生统一哭
我们来看个完整的实例:
哭。。。
无参构造被调用中
哭。。。
有参构造被调用中
只要和构造函数区分开来并且记住它们两的核心作用就好了:
构造代码块:构造代码块是给所有对象进行统一初始化。
构造函数:构造函数给对应的对象初始化。
构造代码块作用:给所有的对象进行统一的初始化。
问题:要求每个小孩出生都会哭,这份代码有两个构造函数,如果需要每个小孩出生都要哭的话,那么就需要在不同的构造函数中都调用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, "男"); } }运行结果:
哭。。。
无参构造被调用中
哭。。。
有参构造被调用中
只要和构造函数区分开来并且记住它们两的核心作用就好了:
构造代码块:构造代码块是给所有对象进行统一初始化。
构造函数:构造函数给对应的对象初始化。