靜態型別與函式過載

2022-03-10 22:13:50 字數 924 閱讀 6873

有以下**:

public class main 

public static class man extends human {}

public static class woman extends human {}

public static void sayhello(human human)

public static void sayhello(man man)

public static void sayhello(woman woman)

public static void main(string args)

}

上述**執行完畢後控制台的輸出結果為:

human

human

human

human human = new woman();
上面**中的「human」被稱為變數human的靜態型別(static type)

靜態型別和實際型別在程式中可以發生變化,但是靜態型別的變化僅僅在使用時發生,變數本身的靜態型別不會被改變,並且靜態型別是編譯期可知的;而實際型別變化的結果在執行期才能確定,編譯器在編譯程式的時候並不知道乙個物件的實際型別是什麼

public static void main(string args)
human

manwoman

過載方法以引數列表(引數個數、引數型別)為區分依據。

編譯期僅僅可知變數的靜態型別,無法確定變數的實際型別。

綜上,在編譯階段編譯器根據引數的靜態型別來決定最終執行方法的哪個過載版本

動態過載與靜態過載

了解乙個概念 動態繫結和靜態繫結 下面看一段 include using namespace std class parent void foo1 class son public parent void foo1 intmain 執行之後,結果是 foo from son foo1 from pa...

虛函式中靜態型別與動態型別

子類中含有父類的介面,所以在任何需要基類指標或引用的地方,我們都可以為其提供乙個派生類的指標或引用。在任何需要基類副本的地方,我們也可以為其提供乙個派生類。但是指標和引用的地方是動態型別,而副本的地方是靜態型別。表示式的靜態型別在編譯時總是已知的,而動態型別則是變數或表示式表示的記憶體中的物件的型別...

Python物件型別判斷與函式過載

1.判斷物件型別 通過type函式可以知道物件的型別,示例 如下 在寫函式時,時常遇到需要應付不同的引數型別以及不同的引數數量的情況。在c 中,通常定義多個 同名不同參 的函式來過載搞定,但python中的過載可以用另外的方法實現 引數型別判斷 預設值 上面的 定義了乙個函式tracelog,這個函...