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!")
}
}