Java permite acceder a la variable base de Kotlin a través de su hijo, pero no a Kotlin, ¿por qué?

Tengo una class como la siguiente

open class KotlinBase { companion object { const val TAG = "testing" } } 

Y un hijo de ella como

 class KotlinChild : KotlinBase() 

Cuando bash acceder a TAG desde una class de Java, podría

 public class JavaOther { String test1 = KotlinBase.TAG; // This is okay String test2 = KotlinChild.TAG; // This is okay } 

Sin embargo, al acceder desde la class Kotlin, no puedo acceder a través del Niño.

 class KotlinOther { val test1 = KotlinChild.TAG // Compile/Syntax error val test2 = KotlinBase.TAG // This is okay } 

¿Por qué mi class de Kotlin no puede acceder a la variable henetworkingada TAG través de KotlinChild ?

Es una decisión de layout que le permite evitar ambigüedades. – las classs secundarias pueden tener sus propios companion object con campos / methods con los mismos nombres que los del padre.

Al restringir el acceso a los compañeros solo a través de la class real, ya no existen problemas con el sombreado de campo / método ambiguo.

Además, los objects complementarios no son miembros static conocidos de otros idiomas. Aunque, la mayoría de los casos de uso se superponen.

Además, restring eso

 KotlinBase.TAG 

es un atajo para:

 KotlinBase.Companion.TAG 
  • Validar files XML grandes contra grandes XSD, ¿hay alguna manera rápida de hacerlo?
  • IntelliJ: error de Kotlin causa parpadeo del mouse y errores en el código
  • ¿Cómo leer un file de text de resources en Kotlin?
  • Cómo devolver el valor de la function en kotlin
  • La mejor manera de manejar ese escenario donde "smart cast es imposible"
  • Extraño comportamiento de componer y ObservableTransformer en RxJava cuando el genérico pasado se extiende
  • El punto de interrupción no recibe un golpe dentro de la callback de Kotlin en Intellij
  • Solo las dependencies se copyn cuando se implementan plugins intellij
  • ¿Cuál es el tipo de setContentView ()
  • No se puede crear una instancia de actividad | Causado por: kotlin.KotlinNullPointerException
  • En Kotlin Lenguaje de progtwigción importancia de varargs en términos de usos