類初始化學習筆記

2021-10-14 16:31:44 字數 2204 閱讀 1243

例:person (人)就是,王思聰就是這個"person"類的物件,他的身高、體重等就是物件的屬性

類名 物件名 =new類名()

先執行靜態**塊,且只執行一次。構造**塊每次呼叫構造方法都執行。

class fu 

public fu()

public int test()

public static int method()

}class zi extends fu

public zi()

public int test()

public static int method()

public void result()

}public class extendstest

}

執行結果

父類靜態成員變數方法

父類靜態**塊

子類靜態成員變數方法

子類靜態**塊

子類非靜態成員變數方法

父類構造**塊

父類構造方法

子類非靜態成員變數方法

子類構造**塊

子類構造方法

3010

5

靜態**塊 > 構造**塊 > 構造方法

子類初始化之前先會進行父類的初始化

靜態成員變數方法和靜態**塊從上到下的順序依次執行

非靜態成員變數方法和構造**塊從上到下的順序依次執行,構造方法最後執行

非靜態成員變數方法前面有乙個預設的物件this,this表示正在建立的物件,這裡是在建立son物件,所以test()執行的是子類的非靜態成員變數方法(方法的重寫)

this:呼叫本類(當前類)。

super:呼叫父類。

用於繼承關係中,方法名,返回值,引數列表必須相同

例:

class father 

}class son extends father

}

哪些方法不可以被重寫

被final修飾的方法

被static修飾的方法

被private修飾的方法

物件的多型性

1.向上轉型(自動完成):父類 父類物件 = 子類例項

class fu

}class zi extends fu

}public class test

2.向下轉型(強制轉換):子類 子類物件 =(子類) 父類例項;

class fu

}class zi extends fu

}public class test

方法名一致,方法的引數個數不同或引數型別不同,與返回值無關

例:

public class test 

public int add(int y, int x)

}

public class parameter 

public void show(string name)

}

1.形參是基本資料型別(在棧裡面開記憶體):值傳遞;不會影響到實際引數。

(byte、short、char、int、long、float、double、boolean)

public class test2 

private void method(int x)

}

2.實參是引用資料型別(在堆裡面開記憶體  new):位址值傳遞;會影響到實際引數。

特殊型別:string,包裝類(byte、short、character、integer、long、float、double、boolean)

public class test2 ;

method(a);

system.out.println("呼叫完method方法之後:" + a[1]); //1

}public static void method(int a)

}

類的初始化學習

1.類的成員變數會自動進行初始化 基本型別 0 引用型別 null 2.區域性變數必須進行初始化 否則報錯 3.對於類的成員變數初始化操作,比如 int a 9 實際上進行的操作是 int a 0 a 9 所以在賦值前先進行了初始化操作.這樣可以確保任何成員變數都先執行了初始化工作 4.在類的內部,...

Swift學習筆記 初始化

swift為結構體提供了預設初始化方法,當結構體所有屬性都有預設值時,可以使用空白初始化方法 struct person var person person 成員初始化方法是預設初始化方法的另外一種形式,注意常量屬性如果有預設值則不能使用初始化方法,因為常量只能初始化一次 struct person...

類初始化和例項初始化

乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行clinit 方法 clinit 方法由靜態類變數顯式賦值 和靜態 塊組成 類變數顯式賦值 和靜態 塊 從上到下順序執行 clinit 方法只執行一次 父類的初始化 ...