interface IParent {
fun printSomething(argument: String = "default") // default val specified in interface
}
class Child : IParent {
override fun printSomething(argument: String){ // no default val specified in impl.
println(argument)
}
}
Child().printSomething() // compiles successfully, and prints "default"
2条答案
按热度按时间xxe27gdn1#
不仅没有"需要在每个实现中指定相同的默认参数",甚至是不允许的。
重写方法始终使用与基方法相同的默认参数值。当使用默认参数值重写方法时,必须从签名中省略默认参数值:
对于评论
我想如果我们希望实现类有不同的默认值,我们要么从父类中省略它,要么在方法内部处理它。
另一个选择是使它成为一个可以覆盖的方法:
6kkfgxo02#
(It's OK to ask and answer your own questions)
下面的代码确认将默认值传递给实现。