如何在同一Kotlin类中定义同名同签名的两个函数?
在Kotlin类中实现同名同签名的函数
你想要的这种在同一个类里定义同名同签名函数的需求,其实可以通过**伴生对象(companion object)**来轻松实现,这是Kotlin专门支持的一种场景。
原理说明
在Kotlin中,伴生对象里的函数属于类级别(静态)的成员,而类内部直接定义的函数是实例级别的成员。这两者的作用域不同,调用方式也不一样——类级别函数通过类名直接调用,实例函数必须通过类的对象实例调用,因此编译器不会将它们判定为重复定义。
代码示例
class A1 { companion object { fun show() { println("in A companion") } } fun show() { println("in A") } } fun main(args: Array<String>) { // 调用伴生对象里的类级别show()函数 A1.show() // 创建实例后调用成员show()函数 A1().show() }
运行结果
执行这段代码后,控制台会输出:
in A companion in A
这样就完美实现了你想要的效果:同一个类里有两个名字和签名完全相同的show()函数,分别对应类级别和实例级别的调用场景。
内容的提问来源于stack exchange,提问作者hunny jain
相关产品推荐
相关产品推荐

