所以我是一名java程序员,我知道重载函数意味着什么。此外,我已经使用不同类型的参数重载了一个函数,并且可以使用更少和更多的参数重载。
我在接受采访时被问到这个问题。我真的不知道这有什么好处或者面试官在这里得到了什么。它有任何性能优势吗?有什么想法吗?
感谢。
答案 0 :(得分:6)
通过允许使用默认值调用函数来提供灵活的接口。有些语言通过可选参数允许这样做,但是你可以通过重载实现大致相同的功能。
答案 1 :(得分:5)
我之前用它来提供向后兼容性。
答案 2 :(得分:1)
说你有一个通常不需要改变的权利,除非在特殊情况下你可以简单地写一个重载的方法来接受特殊的情况,而不是要求它默认或者需要在常规方法中每次都设置它
例如
public void connectToDatabase(string connString) { //一些命令 }
public void connectToDatabase(string connString,string username,string password) { //一些命令 }
答案 3 :(得分:0)
面试官可能一直在暗示依赖注射,这可以通过方法或构造者来完成。
答案 4 :(得分:0)
绝对是向后兼容性。此外,如果很少有参数很少传递(超过2个)非默认值,那么创建重载方法很有用。
答案 5 :(得分:0)
如果某种语言不支持重载,则执行速度会更快。因为程序不必使用/跟踪/管理重载机制。
但是如果语言支持重载,你应该使用它们!以下是性能意义上的原因:
传递参数代价高昂。因为他们需要内存空间并可以访问它们。因此,如果您发送SAME数据类型的2个参数,它实际上会比您传递1个参数慢。
对于不同的参数,你没有出路。
由于您至少必须为最长的参数列表创建函数,因此您必须检查大量的空值/空值并根据它们具有条件来实现更少或不同参数的算法。
有些参数实际上是其他参数的属性。您可以使用数组或数组引用发送它们。就像你可能想要打印一些东西,你可能会有一些常见的颜色,边框等参数。你真的不需要为它们制作单个参数。
您还应该计算每个版本的使用次数。您可以合并频率较低的那些。不要碰那些最繁忙的人!
所以有很多实用的理论;)