1.編譯器檢視物件的宣告物件和方法名。如x.f(args)
語句,假設隱式引數x宣告為c類物件。這時編譯器一一枚舉所有c類中名為f的方法和其超類中訪問屬性為public且名為f的方法。
2.編譯器檢視呼叫方法時提供的引數型別。這個過程稱為過載解析。
3.如果是private、static、final方法或者構造器,那麼編譯器就可以準確知道地知道呼叫哪個方法,這種呼叫方式稱為靜態繫結。如果不是這幾種情況,就採用動態繫結,執行下面過程。
4.當程式執行時,並且採用動態繫結呼叫方法時,虛擬機器一定呼叫與x所引用物件是實際型別最適合的那個類的方法。假設x的實際型別是d,它是c類的子類。那麼虛擬機會先在d類中尋找符合的方法,否則將在d類的超類中尋找,以此類推。
注意:如果每次呼叫方法都要進行搜尋,時間開銷會變得很大,所以虛擬機器預先為每個類建立了一張方法表,其中列出了所有方法的簽名(方法名和引數列表)和實際呼叫的方法。
5.呼叫方法。
JAVA中方法的呼叫
一 呼叫本類中的方法 方法一 被呼叫方法宣告為static 可以在其他方法中直接呼叫。示例 如下 public class helloword 被呼叫方法,這裡使用了static宣告為靜態方法 param x param y return private static int add int x,i...
OC方法呼叫過程
inte ce person nsobject void personmethod void personclassmethod end implementation person void personmethod void personclassmethod endperson新建的物件是怎樣去...
Java中方法的宣告與呼叫
方法就類似於c語言中的函式,它的宣告格式為 修飾符1 修飾符2.返回值型別 方法名 形式引數列表 方法的引數列表可以是有引數的,也可以是沒有引數的。使用方法的好處 提高 的復用性 有參方法是指 中包含乙個或多個變數的定義,也稱為引數列表 無參方法是指 中不含引數 引數有兩種 形式引數 形參 在方法定...