所以我是一名java程序員,我知道什麼重載函數意味着什麼。此外,我已經用不同類型的參數重載了一個函數,並且可以使用更少和更多的參數來重載。爲什麼使用更少/更多的參數重載函數?
我在採訪時被問到了這個問題。我真的不知道這是否有任何好處,或者面試官在這裏得到了什麼。它有什麼性能優勢嗎?有什麼想法嗎?
謝謝。
所以我是一名java程序員,我知道什麼重載函數意味着什麼。此外,我已經用不同類型的參數重載了一個函數,並且可以使用更少和更多的參數來重載。爲什麼使用更少/更多的參數重載函數?
我在採訪時被問到了這個問題。我真的不知道這是否有任何好處,或者面試官在這裏得到了什麼。它有什麼性能優勢嗎?有什麼想法嗎?
謝謝。
這是關於通過允許使用默認值調用函數來提供靈活的接口。有些語言允許通過可選參數來實現這個功能,但是您可以通過重載獲得或多或少的效果。
我已經用它來提供向後兼容性。
面試官可能暗示了依賴注入,這可以通過方法或構造函數來完成。
絕對是爲了向後兼容。此外,如果少數參數很少通過(超過2個)非默認值,那麼創建重載方法很有用。
其提供的靈活性 如
說你有,通常犯規必要在特殊情況下進行更改thexcept一個proerty你可以簡單地寫一個重載的方法接受特殊curcumstance而不是要求它被拖欠或需要每次設置它在常規方法
例如
公共無效connectToDatabase(串CONNSTRING) { //一些命令 }
公共無效connectToDatabase(字符串CONNSTRING,用戶名字符串,字符串密碼){ // 一些命令 }
如果語言不支持重載,那麼,執行速度更快。因爲程序不必使用/跟蹤/管理重載機制。
但是如果語言支持重載,你應該使用它們!從性能角度來看原因如下:
傳遞參數代價高昂。因爲他們需要內存空間並訪問它們。因此,如果您發送2個SAME數據類型的參數,那麼實際上它會比傳遞1個參數要慢。
對於不同的參數,你沒有出路。
由於您至少必須爲最長的參數列表創建函數,因此您必須檢查很多空/空值,並根據它們具有條件以實現更少或不同參數的算法。
有一些參數實際上是其他參數的屬性。您可以將它們發送到數組或數組引用。就像你可能想要打印的東西一樣,你可能會有一些像它們常見的顏色,邊框等參數。你真的不需要爲它們製作單個參數。
您還應該計算每個版本的使用次數。您可以合併頻率較低的頻道。不要觸摸最繁忙的!
所以很多實用的理論;)