Jos*_*z_2 1 methods abstraction default-value kotlin
在 Kotlin 中,您可以定义一个带有默认值的抽象函数。
这个默认值是否会被传递到实现函数,而不需要在每个实现中指定相同的默认参数?
不仅没有“需要在每个实现中指定相同的默认参数”,甚至是不允许的。
覆盖方法始终使用与基本方法相同的默认参数值。使用默认参数值覆盖方法时,必须从签名中省略默认参数值:
Run Code Online (Sandbox Code Playgroud)open class A { open fun foo(i: Int = 10) { /*...*/ } } class B : A() { override fun foo(i: Int) { /*...*/ } // no default value allowed }
对于评论
我想如果我们想要实现类的不同默认值,我们需要从父级中省略它或在方法中处理它。
另一种选择是使其成为可以覆盖的方法:
interface IParent {
fun printSomething(argument: String = defaultArgument())
fun defaultArgument(): String = "default"
}
class Child : IParent {
override fun printSomething(argument: String){
println(argument)
}
override fun defaultArgument(): String = "child default"
}
Child().printSomething() // prints "child default"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1414 次 |
| 最近记录: |