ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
## 函数重载 无论是Java语言还是C++语言,都会有函数重载,函数重载主要是针对不同功能业务的需求,暴露不同参数的接口,包括参数列表个数、参数类型等。这些参数不同的调整会增加多个同名函数,这样在程序中调用这些函数时容易出现调用错误。但是Kotlin语言就在这个方面优于Java语言与C++语言,因为这门语言在语法上比较明确,并且还存在函数命名参数与默认值参数,这样就可以彻底消除函数重载时容易出现调用出错的问题。 函数重载一般是用在功能相同但参数不同的接口中,例如最简单的四则运算操作——加、减、乘、除,我们以加法为例,结合之前的案例来讲解函数重载的使用,具体代码如下所示。 ``` /** * 定义一个函数sum(),函数有1个参数,参数类型为Int */ fun totalNum(num: Int): Int { if (num == 1) { return 1 } else { return num + totalNum(num - 1) } } /** *定义一个sum()函数,函数有1个参数,参数类型为Float */ fun totalNum(num: Float): Float { //重载函数参数类型不同 if (num == 1F) { return 1F } else { return num + totalNum(num - 1F) } } /** *定义一个sum()函数,函数有2个参数,参数类型别是Int */ fun totalNum(num: Int, total: Int = 0): Int { //重载函数参数个数不同 if (num == 1) { return 1 + total } else { return totalNum(num - 1, num+ total) } } fun main(args: Array<String>) { var a1 = totalNum(5) var a2 = totalNum(5F) var a3 = totalNum(5, 0) println("a1=" + a1) println("a2=" + a2) println("a3=" + a3) } ``` 运行结果 ``` a1=15 a2=15.0 a3=15 ``` 上述代码中,定义了3个同名函数totalNum(),它们的参数个数或类型不同,从而形成了函数的重载,在main()函数中调用totalNum()函数时,根据传递不同的参数来确定调用的是哪个重载函数,如调用totalNum(5)函数,根据该函数中传递的参数5为Int类型可知,此时调用的是参数为1个Int类型的totalNum()函数,该函数主要是通过递归函数求1~5的数字之和。 >[info]需要注意的是,函数的重载与函数的返回值类型无关,只需要同时满足两个条件,一是函数名相同,二是参数个数或参数类型不相同即可。