Java类的第四个成员:代码块(或称初始化块)

来源:互联网 发布:动力学仿真软件ls 编辑:程序博客网 时间:2024/06/07 09:49
/** * 类的第四个成员:代码块(或称初始化块) * *代码块如果有修饰的话,只能是static */public class TestOrder {public static void main(String[] args) {Order o = new Order();System.out.println(o);System.out.println();Order o0 = new Order();System.out.println(o0);}}class Order {private String orderName = "小明";/** * 非静态代码块 *  * 1.可以对类(静态 & 非静态)的属性进行初始化操作,同时也可以调用本类声明的方法(静态的 & 非静态的) * 2.里面可以有输出语句 * 3.一个类中可以有多个非静态的代码块,多个代码块之间按照顺序结构执行 * 4.没创建一个类的对象,非静态代码块就加载一次 * 5.非静态代码块的执行要早于构造器 *  * 关于属性赋值的操作的顺序: * ①默认的初始化;②显式的初始化或代码块初始化(此处的两个结构按照顺序执行); * ③构造器;④通过方法的对对象的属性赋值 */{orderId = 1001;orderName = "阿呆";System.out.println("---非静态代码块---");}/** * 静态代码块 *  * 1.里面可以有输出语句 * 2.随着类的加载而加载,而且只被加载一次 * 3.多个静态代码块之间按照顺序结构执行 * 4.静态代码块的执行要早于非静态代码块 * 5.静态的代码块中只能执行静态的结构(类属性、类方法) */static {System.out.println("---静态代码块---");}private int orderId = 111;public Order() {super();}public Order(int orderId, String orderName) {super();this.orderId = orderId;this.orderName = orderName;}public int getOrderId() {return orderId;}public void setOrderId(int orderId) {this.orderId = orderId;}public String getOrderName() {return orderName;}public void setOrderName(String orderName) {this.orderName = orderName;}@Overridepublic String toString() {return "Order [orderId=" + orderId + ", orderName=" + orderName + "]";}}

结果:

---静态代码块------非静态代码块---Order [orderId=111, orderName=阿呆]---非静态代码块---Order [orderId=111, orderName=阿呆]

练习:

class Root{static{System.out.println("Root的静态初始化块");}{System.out.println("Root的普通初始化块");}public Root(){System.out.println("Root的无参数的构造器");}}class Mid extends Root{static{System.out.println("Mid的静态初始化块");}{System.out.println("Mid的普通初始化块");}public Mid(){System.out.println("Mid的无参数的构造器");}public Mid(String msg){//通过this调用同一类中重载的构造器this();System.out.println("Mid的带参数构造器,其参数值:"+ msg);}}class Leaf extends Mid{static{System.out.println("Leaf的静态初始化块");}{System.out.println("Leaf的普通初始化块");}public Leaf(){//通过super调用父类中有一个字符串参数的构造器super("阿呆");System.out.println("执行Leaf的构造器");}}public class TestLeaf{public static void main(String[] args){new Leaf();System.out.println();new Leaf();}}
结果:

Root的静态初始化块Mid的静态初始化块Leaf的静态初始化块Root的普通初始化块Root的无参数的构造器Mid的普通初始化块Mid的无参数的构造器Mid的带参数构造器,其参数值:阿呆Leaf的普通初始化块执行Leaf的构造器Root的普通初始化块Root的无参数的构造器Mid的普通初始化块Mid的无参数的构造器Mid的带参数构造器,其参数值:阿呆Leaf的普通初始化块执行Leaf的构造器


0 0
原创粉丝点击