重载是很好理解的,就是相同的函数名使用不同的参数的多个函数。很多时候,我们需要一个函数来做很多事情,而这些事情不是要同时做的,根据给入参数的不同来决定所要完成的事情。这就是要用到重载的业务场景。
比如有个机器人叫做 a,
当什么信息都不给它时,它只会返回 0;
当你给它一个整数的时候,它会把这个整数当作年龄来进行信息反馈;
当你给它的是一个字符串的时候,它会把这个串当作自己的名字来处理。
那么接收这些信息的都是 a,所以我们按照这个逻辑,建立一个名为 a 的函数。
代码如下
class Overloads{
fun a():Int{
return 0
}
fun a(int:Int):String{
return "我${int}岁了。"
}
fun a(str:String):String{
return "我是$str"
}
}
因为用到了重载,我们就叫这个类为 Overloads 了。然后,如下调用
val overloads = Overloads()
println(overloads.a())
println(overloads.a(3))
println(overloads.a("joel"))
看看运行结果
0
我3岁了。
我是joel
很好理解吧。再也不担心那些起名字的事情了,只要我们给不得不同名的函数不同的参数即可。
不仅是参数类型,参数个数也可以不同。比如
fun a(str: String, int: Int):String{
return "我是${int}岁的${str}。你喜欢我吗?"
}
调用是
println(overloads.a("月儿",16))
运行结果就会增加一句
我是16岁的月儿。你喜欢我吗?