重写(Override)
重写通常是指子类覆盖父类的属性或方法,通常会标记为override
:
open class Base {
open val name = "Base"
open fun invoke() = println("父类")
}
class Override : Base() {
override val name = "Override"
override fun invoke() = print("子类")
}
fun main() {
val base = Base()
val override = Override()
println(base.name)
println(override.name)
base.invoke()
override.invoke()
}
Base
Override
父类
子类
重载(Overload)
重载是指同一域中的同名函数(或方法)具有不同的参数类型或数量。
fun getName() = "Kotlin"
fun getName(versionCode: Int) = "Kotlin $versionCode"
fun getName(version: String) = "Kotlin $version"
fun main() {
println(getName())
println(getName(2))
print(getName("2.0.0"))
}
Kotlin
Kotlin 2
Kotlin 2.0.0
Note:参数名称不同但类型相同的函数不是重载:
fun getName(v: String) = "Kotlin $v" fun getName(version: String) = "Kotlin $version"