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

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

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也不能扩展其他类。

  • 自己的SDK架构 - Kotlin中的异步方法API
  • 如何命名一个线程?
  • 如何更改Kotlin属性的名称以匹配Firebase数据库上的字段
  • 如何在类文件中放置Kotlin扩展?
  • Android库模块在使用纯Kotlin模块的类时不会编译
  • 为什么房间实体不能在Android中使用不可变属性
  • 与Kotlin重载的构造函数
  • Android Studio转换为Kotlin:在某些情况下使用@JvmStatic
  • 如何制作一个Kotlin可比较类型?
  • javascript匿名对象在kotlin
  • IntelliJ的IdeaVim插件禁用将Java转换为Kotlin
  • Kotlin language will be the best programming language for Android.