Las classs de datos de Kotlin contienen funciones abiertas

Estaba leyendo el tutorial oficial de kotlin, en el tema de la class de datos , se me ocurrió un siguiente punto.

Si un supertipo tiene las funciones componentN () que son types abiertos y de devolución compatibles, las funciones correspondientes se generan para la class de datos y anulan las del tipo. Si las funciones del supertipo no pueden anularse debido a firmas incompatibles o ser definitivas, se informa un error;

Mis preguntas son,

1) ¿Qué es las funciones componentN() ?

2) ¿La class de datos anula automáticamente la function de abrir?

3) ¿Es correcto el siguiente código?

 open class SuperDataClass { open fun componentN() { println("from super class") } } data class DataClassExample (var name: String): SuperDataClass() { // } 

1) ¿Qué es las funciones componentN ()?

Son funciones de operador correspondientes a las properties en su order de statement.

Ejemplo:

  data class Person(name: String, age: Int) 

la class anterior tendrá una function component1 y una function component2 , permitiendo el acceso a través de la statement de desestructuración para nombrar y edad, en ese order.
Tenga en count que la function componentN es solo para referencer los componentN 1st, 2nd, 3rd, …, Nth. La function componentN sí nunca se genera.

2) ¿La class de datos anula automáticamente la function de abrir?

En la class de datos, se extiende desde Any class, no anula automáticamente ninguna function. componentN funciones componentN se generan en time de compilation.

3) ¿Es correcto el siguiente código?

 open class SuperDataClass { open fun componentN() { println("from super class") } } data class DataClassExample (var name: String): SuperDataClass() { // } 

Sí, se comstackrá y se ejecutará correctamente. Pero esto es solo porque, como dije antes, el componentN no se genera para las classs de datos.
Sin embargo, en este caso se genera un component1 para el name de propiedad de DataClassExample . Como dice la cita de la documentation que publicó: si testing este código, tendrá un error.

 open class SuperDataClass { open fun component1() {//<-- note this println("from super class") } } data class DataClassExample (var name: String): SuperDataClass() { // } 

El error específico es:

 [DATA_CLASS_OVERRIDE_CONFLICT] Function 'component1' generated for the data class conflicts with member of supertype 'SuperDataClass' 
  • Extensiones de Kotlin para Android y menu
  • Error de complemento: Kotlin lanzó una IllegalStateException no detectada
  • ¿Cómo conseguir ARTE ALBUM de una canción de su path en kotlin?
  • ¿Qué significa la advertencia «Usar properties de los packages de variante de compilation»?
  • Obteniendo exception de retrofit El tipo de retorno de método no debe include una variable de tipo o comodín en kotlin
  • Hacer clic en una vista de text para cambiar el fragment
  • Cómo modificar la variable de instancia de AsyncTask por separado
  • Click listener en ViewHolder solo responde a veces
  • ¿Qué versión (s) de Kotlin debería usar para Android Studio 3.0 Canary 1?
  • Extremadamente lento en autocompletado y análisis de código para proyectos Kotlin en Intellij IDEA
  • No se pueden agregar los fragments usando la function de Extensión de Kotlin