題目一:LeafTest.java
總體順序是
package com.atguigu.exer05;
//總結:由父及子,靜態先行
class Root{
static{
System.out.println("Root的靜態初始化塊");
}
{
System.out.println("Root的普通初始化塊");
}
public Root(){
super();
System.out.println("Root的無參數的構造器");
}
}
class Mid extends Root{
static{
System.out.println("Mid的靜態初始化塊");
}
{
System.out.println("Mid的普通初始化塊");
}
public Mid(){
super();
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 LeafTest{
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的構造器
總結:
靜態代碼塊,對象實例化就執行,無論new多少個對象,僅執行一次
構造代碼塊,對象一實例化就執行,沒實例化一次執行一次。
構造器:與類同名且沒有返回值,用來初始化類屬性。