【发布时间】:2017-08-10 14:29:47
【问题描述】:
我知道 Kotlin 中抽象类和接口之间的两个区别:
- 抽象类可以有状态(例如
var...) - 一个类可以实现多个接口,但不能实现多个抽象类。
既然 Kotlin 是一门比较新鲜的语言,我想知道为什么抽象类没有被抛弃?接口似乎是一种优越的工具,几乎不需要抽象类。
详细说明:Kotlin 确实支持接口中的具体函数实现,例如:
interface Shiny {
fun shine(amount : Int) // abstract function
fun reflect(s : String) { print ("**$s**") } // concrete function
}
有人可以提供一个需要抽象类的强大实际示例吗?
【问题讨论】:
-
这实际上与询问“为什么在 java 或 c# 中使用抽象类”或任何其他面向对象的语言相同
-
我不这么认为:支持接口上的具体功能 - 不是回答这个问题时的状态。湾。 kotlin 很新鲜,可以选择放弃抽象类(与 java 相比 - 必须支持向后兼容性)
-
Kotlin 在编译到 JVM 时没有实现任何高开销的东西。与 Java 6 兼容,它不使用 Java 8 风格的接口默认方法。
-
@LiorBar-On 我愿意 - 这个问题的答案实际上与 Interface vs Abstract Class (general OO) 相同。
标签: kotlin abstract-class