Say, tengo tres interfaces:clase que hereda de varias interfaces que tienen el mismo método de firma
public interface I1
{
void XYZ();
}
public interface I2
{
void XYZ();
}
public interface I3
{
void XYZ();
}
Una clase que hereda de estas tres interfaces:
class ABC: I1,I2, I3
{
// method definitions
}
Preguntas:
Si implemento así:
clase ABC: I1, I2, I3 {
public void XYZ() { MessageBox.Show("WOW"); }
}
Compila bien y funciona bien también! ¿Significa que esta implementación de método único es suficiente para heredar las tres interfaces?
¿Cómo puedo poner en práctica el método de todas las tres interfaces y llamarlos? algo como esto:
ABC abc = new ABC(); abc.XYZ(); // for I1 ? abc.XYZ(); // for I2 ? abc.XYZ(); // for I3 ?
sé que se puede hacer usando la aplicación explícita pero no soy capaz de llamar a ellos. :(
¡Es interesante que esto sea posible en C#! Implementar métodos de interfaz colisionantes por separado en la misma clase es imposible en Java, hasta donde yo sé. –
Es posible, sí, aunque generalmente no lo recomendaría (es confuso). El único lugar en el que creo que es legítimo es cuando se implementan 'ICollection' y se quiere 'ocultar' la implementación' IEnumerable' no genérica de la definición de clase normal. –