web-dev-qa-db-fra.com

L'activité kotlin ne peut pas être étendue, ce type est définitif, il ne peut donc pas être hérité

J'ai créé une activité kotlin, mais je ne parviens pas à étendre l'activité. Le message est alors envoyé sous la forme "Ce type est final, il ne peut donc pas être hérité de)". Comment supprimer une activité de kotlin de finale afin qu’elle puisse être étendue.

41
Logo

Selon la documentation Kotlin, une annotation ouverte sur une classe est l'opposé de la version finale de Java. Cela permet aux autres d’hériter de cette classe. Par défaut, toutes les classes de Kotlin sont finales.

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

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

Voir: https://kotlinlang.org/docs/reference/classes.html

55
Girish Arora

Par défaut, l'activité de Kotlin est finale et nous ne pouvons donc pas étendre la classe. Pour surmonter cela, nous devons rendre l'activité open afin qu'elle puisse être extensible.

comme semblable open class BaseCompatActivity : AppCompatActivity() { }

17
Logo

Dans Kotlin, les classes sont finales par défaut, c'est pourquoi les classes ne sont pas extensibles.

L'annotation ouverte sur une classe est l'opposé de la finale de Java: elle permet aux autres d'hériter de cette classe. Par défaut, toutes les classes de Kotlin sont finales. Kotlin - Héritage

open class Base(p: Int)

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