¿Qué es la herencia de interfaz?

La herencia de interfaz es un mecanismo en ciertos lenguajes de computadora donde funciones específicas son heredadas por una clase, y luego esa clase en particular debe proporcionar implementaciones para esas funciones para que estén completas. Las interfaces solo existen en ciertos lenguajes de programación orientados a objetos. Se pueden usar para emular la herencia múltiple sin permitir que una clase se multiplique por heredar, porque generalmente no hay límites para el número de interfaces de las que una clase puede heredar. Además de los métodos no implementados, las interfaces también pueden incluir constantes públicas.

En la herencia de la interfaz, el objeto que hereda los stubs y las constantes del método se considera un tipo de objeto de la interfaz. Entonces, si una clase X hereda de una interfaz Y, cualquier instancia de la clase X también sería una instancia de la clase Y. Esto se vuelve más complicado cuando la herencia de la interfaz de una clase involucra más de una interfaz separada. Para cada interfaz adicional que se hereda, la clase resultante puede usarse legítimamente como una instancia de cada una. Si una clase hereda de diez interfaces diferentes, los objetos de esa clase podrían usarse como una instancia de once objetos diferentes, incluido él mismo.

A menudo, una herencia tan compleja no es necesaria. La herencia de interfaz se usa para garantizar que una clase tenga un conjunto específico de comportamientos requeridos, y estos comportamientos le permiten realizar una variedad de funciones que de otra manera no podría hacer. Un ejemplo común de esto es la interfaz ActionListener en Java, que requiere una clase para implementar solo un método específico. La implementación exitosa de este método permite al usuario controlar botones, elementos de menú o cualquier otro objeto de ventana de la clase si lo desea. La herencia de interfaz es una forma relativamente simple de agregar funcionalidad compleja a una clase sin preocuparse por los problemas de herencia más complicados.

Una de las mayores ventajas de utilizar la herencia de interfaces es que permite utilizar objetos específicos en un sentido genérico. Dado que una clase que implementa una interfaz es una instancia de esa interfaz, se puede usar en cualquier lugar donde se requiera una instancia de esa interfaz. Por ejemplo, si la clase A implementa la clase C y la clase B también implementa la clase C, si un método toma como parámetro una instancia de la clase C, una instancia de la clase A o una instancia de la clase B sería un parámetro aceptable para usar. . Las interfaces no se pueden instanciar por sí solas porque no están completas, por lo que nunca habría un objeto que fuera puramente una instancia de la clase C como parámetro.