69 votes

L'activité Kotlin ne peut pas être étendue. Ce type est final, il ne peut donc pas être hérité.

J'ai créé une activité Kotlin, mais je ne suis pas en mesure d'étendre l'activité. J'obtiens ce message : This type is final, so it cannot be inherited from . Comment supprimer final de l'activité de Kotlin, afin qu'elle puisse être étendue ?

0 votes

Si l'un d'eux est définitif, vous ne devriez pas essayer de le prolonger. Cela irait à l'encontre de l'objectif d'être final . Quelle classe essayez-vous d'étendre ?

89voto

Girish Arora Points 571

Selon la documentation Kotlin, l'annotation open sur une classe est l'opposé de l'annotation final de Java. Elle permet à d'autres d'hériter de cette classe. Par défaut, toutes les classes en Kotlin sont finales.

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

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

Référer : https://kotlinlang.org/docs/reference/classes.html

1 votes

Quelle est la raison pour laquelle les classes sont finales par défaut dans Kotlin ?

5 votes

@DhruvamSharma la seule raison de le faire était d'ennuyer les programmeurs. Absolument aucune autre raison valable. Il y a beaucoup de discussions sur Internet et la plupart des gens pensent que c'était une décision stupide.

1 votes

Haha, merci.

27voto

Logo Points 257

Par défaut, l'activité Kotlin est finale, nous ne pouvons donc pas étendre la classe. Pour surmonter cela, nous devons faire en sorte que l'activité open pour qu'il puisse être extensible.

comme open class BaseCompatActivity : AppCompatActivity() { }

25voto

Waqar UlHaq Points 301

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

L'annotation open d'une classe est l'inverse de l'annotation final de Java : elle permet aux autres d'hériter de cette classe. Par défaut, toutes les classes en Kotlin sont finales. Kotlin - Héritage

open class Base(p: Int)

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X