Esta no es otra pregunta acerca de la diferencia entre las clases abstractas y las interfaces, así que piense dos veces antes de votar para cerrarla.¿Las interfaces son redundantes con herencia múltiple?
Soy consciente de que las interfaces son esenciales en los lenguajes de OOP que no admiten herencia múltiple, como C# y Java. Pero ¿qué pasa con los con herencia múltiple? ¿Sería un concepto de interfaz (como característica específica del lenguaje) redundante en un lenguaje con herencia múltiple? Supongo que el "contrato" OOP entre clases se puede establecer usando clases abstractas.
O, para decirlo un poco más explícitamente, ¿las interfaces en C# y Java solo son una consecuencia del hecho de que no son compatibles con la herencia múltiple?
No estoy seguro de lo que está pescando aquí: como dice Bozho, las interfaces son una cobertura de nivel de idioma contra alguien que cambia el comportamiento de una clase de forma inesperada al proporcionar una implementación de métodos que solían ser abstractos. –
Los lenguajes MI realmente necesitan esa cobertura o no (ver los comentarios de Ken más abajo, por ejemplo). También esperaba obtener otra opinión fuera de los campamentos Java/C# –