Java 類加載、調用構造器、執行方法的過程


注:整理到這部分知識點時候發現有很多問題還沒搞清楚,所以這里可能會存在很多不夠詳細甚至錯誤的理解,准備翻一遍編程思想再來更新,

歡迎評論交流

當JVM執行到這么一句代碼:  new Person().setName("superzhao")

它會做這么幾件事

類加載

JVM會用類加載器加載xxx.Person這個class文件

加載(class){

  if(class有父類){

    加載(superclass);

  }

  1.靜態域申明,默認初始化為0,false,null

  2.按照申明順序(從上而下書寫順序)執行靜態域(賦值)和靜態代碼塊(執行代碼塊體),

    二者等價,因此不可在靜態代碼塊中使用位於代碼塊之后申明的靜態域,但是可以初始化

  3.按照申明順序加載靜態方法

}

 

構造器被調用(對象初始化)

1.所有實例域初始化為默認值0,false,null

2.按照申明順序執行域初始化及塊初始化

3.如果構造器"第一行"調用了其他構造器,則執行

4.執行構造器體

 

調用方法

1.編譯器查看對象的申明類型,找到它所有與方法名相同的方法

2.根據參數類型,找到相應"最合適"的父類方法可能會出現類型轉換(向上轉型)

3.如果是private,static,final,構造器 方法,那么已經確定就是該方法(這四種類型的方法沒有多態特征),

  因為沒有多態所以也叫靜態綁定

4.如果是其他方式,采用動態綁定:JVM去尋找改類的實際類型中對應的最合適方法

5.執行調用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM