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

来源:互联网 发布:阿里云怎么添加监控 编辑:程序博客网 时间:2024/05/29 16:01
黑马程序员入学blog...


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


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




class Perosn{private int id;//私有化int型变量idprivate String name;//私有化String型变量nameprivate 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() {//访问Idreturn id;}public void setId(int id) {//设置idthis.id = id;}public String getName() {//访问namereturn name;}public void setName(String name) {//设置namethis.name = name;}public int getAge() {//访问agereturn age;}public void setAge(int age) {//设置agethis.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, "男");}}
运行结果:
哭。。。
无参构造被调用中
哭。。。
有参构造被调用中



只要和构造函数区分开来并且记住它们两的核心作用就好了:
构造代码块:构造代码块是给所有对象进行统一初始化。
构造函数:构造函数给对应的对象初始化。
0 0