關於Java中的方法的基本理解

方法綁定

方法的綁定分爲靜態綁定和動態綁定

  • 靜態綁定:

    靜態綁定(前期綁定,編譯綁定),類中哪些方法是靜態綁定的呢?

    • private,私有方法
    • super方法
    • static方法
    • 構造方法

靜態綁定的方法,在類上存儲方法指針,指針指向方法對象。

  • 動態綁定:

    動態綁定(後期綁定,運行時綁定),存在類型多態,只有運行的時候,才能確定最終的形態。
    哪些是動態綁定呢?

    • 非私有方法
    • 接口方法
  • 方法重寫

    子類重寫父類的方法,並且方法名稱、參數類型、參數個數都相同,叫做方法重寫,也正式Java的多態。

方法表

方法表,是類在加載的時候,在方法區生成的一個數組,裏面存儲類的方法的指針,指向方法對象。

  • 優點:空間換時間,加快目標方法的查找時間。
  • 子類繼承父類的方法:

    如果,子類重寫類父類的方法,那麼子類方法表中指向的是子類的方法對象。
    如果,子類沒有重寫父類的方法,那麼子類方法表中指向的是父類的方法對象。

jvm是怎麼識別方法的

jvm識別方法的關鍵在於「類名+方法名+方法描述」。備註:方法描述是參數類型和返回值類型。

怎麼調用方法

  • 靜態綁定的方法是如何被找到的?
    • 先找到類
    • 然後,找到類中方法的指針,再去調用方法對象
  • 動態方法是如何被找到的?
    • 根據調用者的動態類型(棧的局部變量表中)
    • 根據動態類型,找到方法區中的方法表
    • 在方法表中,找到具體的指針,再去找到方法對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章