¿Cuál es la diferencia al agregar un modificador privado a los arguments en un constructor de Kotlin?

No estoy seguro de la diferencia entre los siguientes dos constructores escritos en Kotlin

class ConcreteItem(val title: String) : Item() { } 

y

 class ConcreteItem(private val title: String) : Item() { } 

Como puede ver, la única diferencia es el modificador "privado" antes del campo de título. ¿Cómo afectará el scope del campo de título?

El siguiente código:

 class ConcreteItem(val title: String) : Item() { } 

es un atajo para:

 class ConcreteItem(title: String) : Item() { val title: String = title } 

donde la falta de un modificador de acceso explícito para el val title implica public :

 class ConcreteItem(title: String) : Item() { public val title: String = title } 

Del mismo modo, el siguiente código:

 class ConcreteItem(private val title: String) : Item() { } 

es un atajo para:

 class ConcreteItem(title: String) : Item() { private val title: String = title } 

Tomando esto en count, la diferencia entre dos declaraciones es simplemente declarar propiedad pública vs propiedad privada.

si se aplica el modificador private , entonces no se sintetizará un "captador" público por el cual otras classs puedan interrogar el valor de "título". de lo contrario será.

Casi siempre quiere que sus arguments de constructor estén disponibles para todo el código de la class. Esta sería la forma idiomática de hacer una variable de miembro privado a partir de un parámetro de constructor.

 class ConcreteItem(private val title: String) {} 

Si eres similar a Java, eso significa:

 class ConcreteItem { private final String title; public ConcreteItem(final String title) { this.title = title; } } 
  • Cómo acceder a la variable de instancia en un object complementario estático en Koltin
  • Cómo usar código que se basa en ThreadLocal con corotines de Kotlin
  • ¿Cómo hacer un time de compilation constante NaN o POSITIVE_INFINITY en Kotlin?
  • No se puede conseguir que las classs de Kotlin en el proyecto Java maven funcionen (Eclipse)
  • Usar kotlin con ContentResolver causa IllegalArgumentException
  • Mapa de Kotlin: ¿por qué no hay paraHashMap ()?
  • ¿Hay alguna forma de iterar todos los campos de una class de datos sin usar la reflexión?
  • Cómo encontrar el nombre de la variable de string-array en strings.xml
  • Nashorn, pase el object java a javascript para que sea JSON.stringified
  • No se puede ejecutar kotlin coroutine (no existe tal exception de método
  • Las variables de desestructuración de Kotlin no funcionan con Pair, Triple o Data Class