大括號{}的意義與靜態程式碼塊與建構函式的載入關係
阿新 • • 發佈:2019-02-08
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.annotation.PostConstruct;
class T {
static {
System.out.println("1");
}
{
System.out.println("2");
}
T() {
System.out.println("父類構造");
}
public static void got(){
System.out.println("呼叫T類的方法,靜態方法");
}
static {
System.out.println("3");
}
{
System.out.println("4");
}
}
public class Test extends T {
public Test() {
System.out.println("子類建構函式");
}
static {
System.out.println("5");
}
{
System.out.println("6");
}
public static void main(String[] args) {
Test.got();
System.out.println("=====================");*/
Test.post();
}
public void get(){
System.out.println("呼叫Test類的方法");
}
public static void post(){
System.out.println("呼叫Test類的靜態方法");
}
static {
System.out.println("7");
}
{
System.out.println("8");
}
}
其實在類內部{}只是代表在呼叫建構函式之前在{}中初始化,static{}只在類載入時呼叫
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.annotation.PostConstruct;
class T {
static {
System.out.println("1");
}
{
System.out.println("2");
}
T() {
System.out.println("父類構造");
}
public static void got(){
System.out.println("呼叫T類的方法,靜態方法");
}
static {
System.out.println("3");
}
{
System.out.println("4");
}
}
public class Test extends T {
public Test() {
System.out.println("子類建構函式");
}
static {
System.out.println("5");
}
{
System.out.println("6");
}
public static void main(String[] args) {
/*Test t = new Test();
t.get();
System.out.println("=====================");Test.got();
System.out.println("=====================");*/
Test.post();
}
public void get(){
System.out.println("呼叫Test類的方法");
}
public static void post(){
System.out.println("呼叫Test類的靜態方法");
}
static {
System.out.println("7");
}
{
System.out.println("8");
}
}
new Test()時,輸出 1 3 5 7 2 4 父類的構造 6 8 子類的構造
(父類靜態程式碼塊) (子類靜態程式碼塊) (父類初始程式碼塊) (子類初始程式碼塊)
呼叫Test類的內部get方法輸出 1 3 5 7 2 4 父類的構造 6 8 子類的構造 呼叫Test類的方法
Test.got()時輸出 1 3 5 7 呼叫T類的方法,靜態方法
Test.post()時輸出 1 3 5 7 呼叫Test類的靜態方法