Sobes.tech
Junior

¿Cuáles son las principales diferencias entre una clase y una interfaz en Kotlin?

sobes.tech AI

Respuesta de la IA

  • Clase: puede contener propiedades (estados) y funciones (comportamiento). Puede ser abstracta, abierta (para herencia) o final. Los constructores definen cómo crear objetos. Soporta herencia de una sola clase y implementación múltiple de interfaces.
  • Interfaz: define un contrato de comportamiento que las clases deben implementar. Puede contener declaraciones abstractas de funciones y propiedades, así como funciones con implementación (Java 8+). No puede contener estados (propiedades con campo de respaldo). Una clase puede implementar varias interfaces. No tiene constructores.

Tabla comparativa:

Aspecto Clase Interfaz
Estado Puede tener propiedades con valor. No puede tener propiedades con valor (solo abstractas).
Constructores Pueden existir. No tienen.
Implementación Puede proporcionar implementación completa. Proporciona implementación parcial o completa (con métodos por defecto).
Herencia Hereda de una sola clase. Implementa múltiples interfaces.
Inicialización Puede ser instanciada. No puede ser instanciada directamente.
Tipo Concreta o abstracta. Solo contrato de comportamiento.

Ejemplo de clase:

class Person(val name: String) { // clase con constructor y propiedad
    fun greet() {
        println("Hello, my name is $name")
    }
}

Ejemplo de interfaz:

interface Greeter { // interfaz con método
    fun greet()
}

class EnglishGreeter : Greeter { // clase que implementa la interfaz
    override fun greet() {
        println("Hello!")
    }
}