48 votes

qu'est-ce qu'un mot-clé `open` pour les champs dans Kotlin?

Dans Kotlin open est le même que n' final en Java pour les classes et les méthodes.

Qu'est - open donnez-moi dans la classe suivante pour le champ marqué comme open?

@MappedSuperclass
abstract class BaseEntity() : Persistable<Long> {
     open var id: Long? = null
}

mise à jour ce n'est pas le double de Ce qu'est la différence entre "ouvrir" et "public" dans Kotlin?

Je suis intéressé en open mot-clé pour les propriétés

mise à jour

open classe peut être héritée.
open le plaisir peut être remplacée
val de la propriété est - final domaine en java

qu'en open de la propriété?

38voto

user2340612 Points 1339

Comme vous l'avez dit, l' open mot-clé vous permet de surcharger les classes, lorsqu'il est utilisé dans la déclaration de classe. En conséquence, la déclaration d'une propriété en tant que open, permet à les sous-classes de remplacer la propriété elle-même (par exemple, redéfinir les getter/setter). Le mot clé est nécessaire, puisque dans Kotlin tout est "final" par défaut, ce qui signifie que vous ne pouvez pas override il (quelque chose de similaire à C#, si vous avez de l'expérience avec cela).

Notez que votre classe est implicitement déclarée open depuis qu'il est abstract, donc vous ne pouvez pas créer une instance de cette classe directement.

24voto

Lajos Arpad Points 5986

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 remplaçable et une classe ouverte est extensible dans Kotlin.

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