java 類呼叫方法的解析過程

2021-08-21 15:20:33 字數 1002 閱讀 4264

丁一兩個類  父類employee:列出這個類的所有方法:

getname()-->employee.getname

getsalary()-->employee.getsalary()

gethireday()hiredate()-->employee.gethireday()

raiswsalary(doubl)-->employee.saisesalary(double)

定義乙個子類,manager:列出這個類的所有方法:

getname()-->employee.getname

getsalary()-->manager.getsalary()

gethireday()hiredate()-->employee.gethireday()

raiswsalary(doubl)-->employee.saisesalary(double)

fetbonus(double)-->manager.setbonus(double)

在執行時,呼叫e.getsalary()的解析過程為:

1)首先,虛擬機器提取e的實際型別的方法表,既可能是employee manager 的方法表,也可能是employee類的其他子類的方法表。

2)接下來,虛擬機器搜尋定義getsalary簽名的類,此時,虛擬機器已經知道應該呼叫哪個方法。

3)最後,虛擬機器呼叫方法:

動態繫結有乙個非常重要的特徵:無需對現存**進行修改,就可以對程式進行擴充套件,假設增加了乙個新類executive。並且變數e有可能引用這個類的物件,我們不需要對包含呼叫e.geisalary()的**進行重新編寫,如果e恰好引用乙個executive類的物件,就會自動呼叫executive.geisalary()方法。

警告:再覆蓋乙個方法的時候,子類方法不能低於超類方法的可見性,特別是,如果超類方法是public,子類必須也是public。經常會發生這類錯誤:在宣告子類方法的時候,遺漏了public修飾符。此時,便以其將會對他進行解析為試圖提供更嚴格的訪問許可權

物件呼叫方法的解析過程

弄清楚如何在物件上應用方法呼叫非常重要。下面假設要呼叫x.f args 隱式引數x宣告為類c的乙個物件。下面是呼叫過程的詳細描述 1 編譯器檢視物件的宣告型別和方法名。假設呼叫x.f param 且隱式引數x宣告為c類的物件。需要注意的是 有可能存在多個名字為f,但引數型別不一樣的方法。例如可能存在...

Java中方法的呼叫過程

1.編譯器檢視物件的宣告物件和方法名。如x.f args 語句,假設隱式引數x宣告為c類物件。這時編譯器一一枚舉所有c類中名為f的方法和其超類中訪問屬性為public且名為f的方法。2.編譯器檢視呼叫方法時提供的引數型別。這個過程稱為過載解析。3.如果是private static final方法或...

java子類的建立過程,以及方法呼叫的過程

首先建立幾個類 1 animal介面 2 dog類 3 littledog類 在animal介面中定義幾個方法 public inte ce animal 建立dog類,實現animal介面 public class dogimplements animal override public void...