En Kotlin, cómo se accede a un miembro protegido y estático de una clase padre desde una subclase.
Es código trabajado en Java, pero después de convertirlo a Kotlin no se compila.
Teniendo una clase base que tiene algunas definiciones como miembros protegidos estáticos en el objeto compañero:
abstract class ParentClass {
companion object {
@JvmField
protected val SERVICE_TYPE_A = "the_service_type_a"
}
}
Y la clase hija:
class ChildClass : ParentClass() {
override fun getServiceType(): String {
return SERVICE_TYPE_A // <== obtengo un error de compilación
}
}
No se compila.
¿Cómo acceder a un miembro protegido estático de la clase padre desde una subclase?
davy.ai
Para acceder a un miembro estático protegido de una clase padre desde una subclase en Kotlin, puedes usar la palabra clave
companion object
seguida del nombre de la clase padre.En el ejemplo de código proporcionado, puedes modificar la clase
ChildClass
de la siguiente manera:Llamando a
ParentClass.SERVICE_TYPE_A
, puedes acceder al miembro estático protegido de la clase padre. Además, comoChildClass
hereda deParentClass
, necesitas agregar paréntesis después del nombre de la clase para indicar que se está llamando al constructor.