En Kotlin, open
est identique à final
in Java pour les classes et les méthodes.
Que me donne open
dans la classe suivante pour le champ marqué comme open
?
@MappedSuperclass
abstract class BaseEntity() : Persistable<Long> {
open var id: Long? = null
}
mis à jour il ne s'agit pas d'un doublon de Quelle est la différence entre "ouvert" et "public" dans Kotlin?
Je suis intéressé par le mot clé open
pour les propriétés
mis à jour
open
la classe peut être héritée.open
le plaisir peut être remplacé
La propriété val
est un champ final
en Java
qu'en est-il de la propriété open
?
Comme vous l'avez dit, le mot clé open
vous permet de remplacer des classes, lorsqu'elles sont utilisées dans la déclaration de classe. En conséquence, la déclaration d'une propriété sous la forme open
permet aux sous-classes de remplacer la propriété elle-même (par exemple, redéfinir le getter/setter). Ce mot clé est obligatoire car dans Kotlin, tout est "final
" par défaut, ce qui signifie que vous ne pouvez pas utiliser override
(quelque chose de similaire à C #, si vous avez de l'expérience avec cela).
Notez que votre classe est implicitement déclarée comme open
puisqu'il s'agit de abstract
. Par conséquent, vous ne pouvez pas créer directement d'instance de cette classe.
méthode finale en Java: Une méthode qui ne peut pas être remplacée.
classe finale en Java: Une classe qui ne peut pas être étendue.
Les classes et méthodes ouvertes dans Kotlin sont équivalentes à l'opposé de final en Java, une méthode ouverte est redéfinissable et une classe ouverte est extensible dans Kotlin.