Una interfaz declara un contrato — un conjunto de métodos que un tipo debe proporcionar — sin (o con mínima) implementación. Una clase abstracta es una clase parcialmente implementada que puede contener estado compartido y métodos concretos pero no puede instanciarse. La distinción clave: una clase puede implementar muchas interfaces pero heredar de solo una clase.
