易混淆知識點總結

一、靜態方法和靜態代碼塊

1、靜態代碼塊是在項目啓動的時候自動執行的代碼塊,且只被執行一次,不需要調用,常用來執行類屬性的初始化;

      靜態方法是用static修飾的方法,不需要創建實例就可以用類名.方法名的方法進行調用。

2、靜態方法中只能調用本類中的靜態成員(包括靜態變量和靜態方法),而不能調用非靜態成員。

      原因是:非靜態的成員變量只能在創建實例對象之後才能被調用,而在靜態方法調用之前是不需要創建任何實例對象的。

3、靜態方法也不能以任何方式使用this和super等關鍵字,因爲在使用靜態方法之前這些對象還沒有被創建。

4、靜態變量是屬於某個類的變量,而不是屬於某個對象的變量,不能將某個方法中的變量定義爲靜態變量。

二、實例化子類時代碼的執行順序

父類中的靜態代碼塊-----子類中的靜態代碼塊-----父類中的非靜態代碼塊-----父類中的無參構造方法-----子類中的非靜態代碼塊-----子類中的構造方法

PS:靜態代碼塊優先執行----其次爲父類中的非靜態代碼塊和構造方法----最後纔是子類中的非靜態方法和構造方法

      實例化子類時會先去父類中找無參構造方法,如果父類中沒有該方法的話一定要在子類中用super方法調用父類中的帶參構造方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章