为什么这个班级考虑最终?

我试图继承下面的类型,但编译器说它是最终的。

class Dice(private var side : Int) { constructor(D : DiceTypesK) : this(D.value) {} } class ExplodedDice(private val D : DiceTypesK) : Dice(D) // ^^^^ this class is final and // can not be inherited from 

为什么我的类型是最终的,因为我不打算这样做?

One Solution collect form web for “为什么这个班级考虑最终?”

在Kotlin中,除Java和C#之外,所有的类都是默认的final,除非标记为明确open 。 以下是文档中的内容 :

一个类的open注释与Java的final一个是相反的:它允许其他人从这个类继承。 默认情况下,Kotlin中的所有类都是final的,这对应于Effective Java ,Item 17:设计和文档以进行继承或者禁止它。

解决的办法就是把你的班级标记为open class Dice

另外,请注意data类继承的限制 :它们既不能open也不能扩展其他类。

  • 和...之间的不同 !! 和? 在Kotlin
  • Kotlin的gradle插件不适用于自定义源集(JMH)
  • MQTT Android打盹模式(Android 7.0)
  • 科特林向我解释了“背景场”
  • Kotlin - 如何做onCompleteListener从Firestore获取数据?
  • 视图不会显示在ViewPager中
  • 不能'buildscript部分中获得一个变量
  • 为“Number Classes”重载+和+ =运算符
  • kotlin-js将字符串转换为另一种编码
  • ReferenceError:ok没有在Kotlin Javascript的QUnitAsserter.assertTrue中定义
  • Spek访问内部可见性Kotlin类
  • Kotlin language will be the best programming language for Android.