2010-10-11 76 views
1

所以我是一名java程序員,我知道什麼重載函數意味着什麼。此外,我已經用不同類型的參數重載了一個函數,並且可以使用更少和更多的參數來重載。爲什麼使用更少/更多的參數重載函數?

我在採訪時被問到了這個問題。我真的不知道這是否有任何好處,或者面試官在這裏得到了什麼。它有什麼性能優勢嗎?有什麼想法嗎?

謝謝。

回答

6

這是關於通過允許使用默認值調用函數來提供靈活的接口。有些語言允許通過可選參數來實現這個功能,但是您可以通過重載獲得或多或少的效果。

5

我已經用它來提供向後兼容性。

0

面試官可能暗示了依賴注入,這可以通過方法或構造函數來完成。

0

絕對是爲了向後兼容。此外,如果少數參數很少通過(超過2個)非默認值,那麼創建重載方法很有用。

1

其提供的靈活性 如

說你有,通常犯規必要在特殊情況下進行更改thexcept一個proerty你可以簡單地寫一個重載的方法接受特殊curcumstance而不是要求它被拖欠或需要每次設置它在常規方法

例如

公共無效connectToDatabase(串CONNSTRING) { //一些命令 }

公共無效connectToDatabase(字符串CONNSTRING,用戶名字符串,字符串密碼){ // 一些命令 }

0

如果語言不支持重載,那麼,執行速度更快。因爲程序不必使用/跟蹤/管理重載機制。

但是如果語言支持重載,你應該使用它們!從性能角度來看原因如下:

  1. 傳遞參數代價高昂。因爲他們需要內存空間並訪問它們。因此,如果您發送2個SAME數據類型的參數,那麼實際上它會比傳遞1個參數要慢。

  2. 對於不同的參數,你沒有出路。

  3. 由於您至少必須爲最長的參數列表創建函數,因此您必須檢查很多空/空值,並根據它們具有條件以實現更少或不同參數的算法。

  4. 有一些參數實際上是其他參數的屬性。您可以將它們發送到數組或數組引用。就像你可能想要打印的東西一樣,你可能會有一些像它們常見的顏色,邊框等參數。你真的不需要爲它們製作單個參數。

  5. 您還應該計算每個版本的使用次數。您可以合併頻率較低的頻道。不要觸摸最繁忙的!

    所以很多實用的理論;)

相關問題