Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法扩展Kotlin活动。此类型是最终类型,因此无法继承_Kotlin_Kotlin Android Extensions - Fatal编程技术网

无法扩展Kotlin活动。此类型是最终类型,因此无法继承

无法扩展Kotlin活动。此类型是最终类型,因此无法继承,kotlin,kotlin-android-extensions,Kotlin,Kotlin Android Extensions,我已创建Kotlin活动,但无法扩展该活动。我收到以下消息:此类型是最终类型,因此无法从继承。如何从Kotlin的活动中删除final,以便对其进行扩展?默认情况下,Kotlin活动是final,因此我们无法扩展该类。 要克服这一点,我们必须使活动打开,以便它可以扩展 正如Kotlin文档中的打开类BaseCompatActivity:AppCompatActivity(){}一样,类上的打开注释与Java的最终注释相反。它允许其他人从该类继承。默认情况下,Kotlin中的所有类都是最终类 op

我已创建Kotlin活动,但无法扩展该活动。我收到以下消息:
此类型是最终类型,因此无法从
继承。如何从Kotlin的活动中删除
final
,以便对其进行扩展?

默认情况下,Kotlin活动是final,因此我们无法扩展该类。 要克服这一点,我们必须使活动
打开
,以便它可以扩展


正如Kotlin文档中的
打开类BaseCompatActivity:AppCompatActivity(){}

一样,类上的打开注释与Java的最终注释相反。它允许其他人从该类继承。默认情况下,Kotlin中的所有类都是最终类

open class Base {
    open fun v() {}
    fun nv() {}
}

class Derived() : Base() {
    override fun v() {}
}

请参阅:

在Kotlin中,类默认为最终类,这就是类不可扩展的原因

类上的open注释与Java的final相反:它允许其他人从这个类继承。默认情况下,Kotlin中的所有类都是最终类。


如果是最后一个,你不应该试图扩展它。这将破坏它作为
最终版本的目的。你想扩展什么类?在Kotlin中使类默认为最终类的原因是什么?@DhruvamSharma这样做的唯一原因是为了激怒程序员。绝对没有其他合理的理由。网上有很多讨论,大多数人认为这是一个愚蠢的决定。哈哈,非常感谢。我能推断出答案。希望你能多描述一点,以加速理解发生了什么。我只需要打开我的函数,错误就会消失。我不理解关于课程是否为最终课程的讨论。@DhruvamSharma我不知道,但出于性能原因,我会猜测。虚拟函数或开放函数的性能开销要大得多,因为它必须在表中查找
open class Base(p: Int)

class Derived(p: Int) : Base(p)