Hoy alguien me dijo que la implementación de la interfaz en C# es simplemente una relación "Can-Do", no una relación "Is-A". Esto entra en conflicto con mi creencia desde hace mucho tiempo en LSP (Principio de sustitución de Liskov). Siempre pienso que toda herencia debe significar una relación "Is-A".La relación de implementación de la interfaz C# es solo una relación de "se puede hacer".
Por lo tanto, si la implementación de la interfaz es solo una relación de "se puede hacer". ¿Qué pasa si hay una interfaz "IHuman" y "IEngineer", y una clase "Programmer" hereda de "IHuman" & "IEngineer"? Sin duda, un "Programador" es un "IHuman" y un "IEngineer".
Si solo se trata de una relación "Can-Do", ¿significa que no podemos esperar que el comportamiento de la instancia del "Programador" sea diferente cuando se trata como IHuman y se trata como IEngineer?
La lectura de su libro de Jon. Es muy bueno. –
@Iain: Me alegra que lo estés disfrutando. Envíame tus comentarios cuando hayas terminado :) –
¿Qué pasa si tienes una clase de Resumen con solo métodos abstractos? ¿Cómo sería eso diferente de una interfaz? Creo que no hay diferencia si solo tiene método. entonces por qué Microsoft ha traído dos cosas. La herencia es tener-una relación, ¿qué implementación de interfaz? –