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' 
  • Kotlin DialogFragment editText editable always null
  • Base de datos de android de Kotlin: no se puede convertir java.lang.String en android.database.Cursor
  • Cómo modificar la variable de instancia de AsyncTask por separado
  • La class Kotlin Custom View implementa una interfaz que no se puede resolver en `: app: compileDebugKotlinAfterJava`. La versión idéntica de Java funciona bien
  • Error de complemento: Kotlin lanzó una IllegalStateException no detectada
  • La igualdad de identidad para los arguments de los types Int e Int está en desuso
  • Estudio de Android 3: Tiempo de ejecución de Kotlin desactualizado
  • Dagger2 inyecta un presentador en un error de actividad de Kotlin
  • Comprobación de conectividad no funciona en Android Oreo Kotlin
  • Los cambios de Android Studio 3.0 Kotlin no se reflejan en la compilation
  • ¿Puedo usar bibliotecas Java de terceros (.jar) para el desarrollo de Android con Kotlin?