我了解到Open Close Principle允许扩展类并限制修改。所以在Kotlin,当我们使用扩展功能时
我假设扩展意味着应用继承和修改意味着添加或更改现有类的代码。
谢谢
扩展功能适用于要将功能添加到内置或第三方类的情况。默认情况下,您无法执行此操作,因为内置函数不可修改。
将toUnsigned方法添加到内置Byte类的示例实现:
fun Byte.toUnsigned(): Int {
return if (this < 0) this + 256 else this.toInt()
}
由于Byte是一个内置类,因此无法直接修改它。但是,您可以按照上面的代码定义扩展功能。然后,您可以通过以下方式调用扩展功能:
val x: Byte = -1
println(x.toUnsigned()) // Prints 255
请记住,这只是语法糖 - 您实际上并没有修改类或其实例。因此,您必须在任何地方导入扩展函数/属性(因为它不与类的实例一起携带)。
资料来源:https://kotlinlang.org/docs/tutorials/kotlin-for-py/extension-functionsproperties.html
在开放封闭原则的上下文中的“扩展”通常并不意味着继承,它意味着以某种方式扩展具有新功能的类。正如你所说,'修改'确实指的是改变类的代码。
Kotlin的扩展功能允许您在不编辑类代码的情况下向类添加方法。这与开放封闭原则完全一致 - 该类扩展了新功能,而不会更改类本身。