2010-10-11 72 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. 您还应该计算每个版本的使用次数。您可以合并频率较低的频道。不要触摸最繁忙的!

    所以很多实用的理论;)

相关问题