es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Imagen

Tags:  , ,

Answer

  1. Avatar for 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:

    class ChildClass: ParentClass() {
        public override fun getServiceType(): String {
            return ParentClass.SERVICE_TYPE_A
        }
    }
    

    Llamando a ParentClass.SERVICE_TYPE_A, puedes acceder al miembro estático protegido de la clase padre. Además, como ChildClass hereda de ParentClass, necesitas agregar paréntesis después del nombre de la clase para indicar que se está llamando al constructor.

Comments are closed.