Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

453
Vistas
¿No puede acceder a las funciones miembro en clase abstracta en Kotlin? ¿Estoy entendiendo mal?

Quiero tener una clase que envuelva algunas funciones sin la necesidad de instanciar la clase en sí. Por lo tanto, pensé que una clase abstracta es la candidata perfecta para esto. Sin embargo, parece que no puedo llamar a las funciones miembro dentro de una clase abstracta incluso si agrego el modificador open a las funciones. Ejemplo:

 abstract class MyAbstractClass { open fun showSomething() { println("Hello World") } } fun main() { MyAbstractClass.showSomething() //Shows unresolved reference }

Tenga en cuenta que estoy usando Android Studio 2021.1.1.Beta.4 por ahora. ¿Estoy entendiendo mal las clases abstractas?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Para su caso de uso, es posible que no necesite crear ninguna clase. Simplemente adjunte la función a un objeto. Por ejemplo:

 object MyObject { fun showSomething() { println("Hello World") } }

Esta declaración se puede poner fuera de las clases por sí sola.

Luego puede llamar a MyObject.showSomething() donde quiera.

Y en realidad también puede simplemente definir la función fuera de cualquier clase u objeto como

 fun showSomething() { println("Hello World") }

y luego use showSomething() donde quiera, pero tal vez sea una mala práctica hacerlo así.

over 4 years ago · Santiago Trujillo Denunciar

0

Parece que quieres un objeto complementario y poner la función allí. La palabra clave open solo abre la función que se anulará. Todas las clases en Kotlin son final de forma predeterminada, por lo que no se pueden extender a menos que open .

 abstract class MyAbstractClass { companion object { fun showSomething() { println("Hello World") } } }

Ahora puedes usarlo sin instanciar nada:

 fun main() { MyAbstractClass.showSomething() //Hello World }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda