web-dev-qa-db-ja.com

kotlinアクティビティは拡張できません。このタイプは最終的なため、継承できません

Kotlinアクティビティを作成しましたが、アクティビティを拡張できません。「このタイプは最終的なため、継承できません」というメッセージが表示されます。 kotlinアクティビティをfinalから削除して、拡張できるようにする方法。

41
Logo

Kotlinのドキュメントによると、クラスのオープンアノテーションはJavaのfinalの反対です。他の人がこのクラスから継承できるようにします。デフォルトでは、Kotlinのすべてのクラスはfinalです。

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

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

参照: https://kotlinlang.org/docs/reference/classes.html

55
Girish Arora

デフォルトでは、Kotlinアクティビティはfinalであるため、クラスを拡張できません。それを克服するには、アクティビティをopenにして、拡張可能にする必要があります。

open class BaseCompatActivity : AppCompatActivity() { }のように

17
Logo

Kotlinでは、クラスはデフォルトでfinalであるため、クラスは拡張できません。

クラスのオープンアノテーションは、Javaのfinalの反対です。つまり、他の人がこのクラスから継承できるようにします。デフォルトでは、Kotlinのすべてのクラスはfinalです。 Kotlin-継承

open class Base(p: Int)

class Derived(p: Int) : Base(p)
14
Waqar UlHaq