¿Puede una interfaz extender múltiples interfaces en Java?


¿Puede una interfaz extender múltiples interfaces en Java? Este código aparece válido en mi IDE y compila:

interface Foo extends Runnable, Set, Comparator<String> { }

Pero había oído que la herencia múltiple no estaba permitida en Java. ¿Por qué parece haber una excepción para las interfaces?

Author: Michael, 2013-10-23

6 answers

Sí, puedes hacerlo. Una interfaz puede extender múltiples interfaces, como se muestra aquí:

interface Maininterface extends inter1, inter2, inter3 {  
  // methods
}

Una sola clase también puede implementar múltiples interfaces. ¿Qué pasa si dos interfaces tienen un método que define el mismo nombre y firma?

Hay un punto difícil:

interface A {
    void test();
}

interface B {
    void test();
}

class C implements A, B {

    @Override
    public void test() {

    }     

}

Entonces la implementación única funciona para ambos :).

Lea mi post completo aquí:

Http://codeinventions.blogspot.com/2014/07/can-interface-extend-multiple.html

 145
Author: ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-29 05:57:38

Un interface puede extender múltiples interfaces.

Una clase puede implementar múltiples interfaces.

Sin embargo, una clase solo puede extender una sola clase.

Cuidado con cómo usas las palabras extends y implements cuando hablas de interface y class.

 66
Author: But I'm Not A Wrapper Class,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-23 15:49:06

¿Puede una interfaz extender múltiples interfaces en java?

La respuesta es: Sí.

Según JLS

Una interfaz puede declararse como una extensión directa de uno o más otras interfaces, lo que significa que especifica implícitamente todo el miembro tipos, métodos abstractos y constantes de las interfaces que extiende, excepto por cualquier tipo de miembro y constantes que pueda ocultar.

 8
Author: Masudul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-23 15:46:42

Puede extender múltiples Interfaces pero no puede extender múltiples classes.

La razón por la que no es posible en Java extender múltiples clases, es la mala experiencia de C++ donde esto es posible.

La alternativa para la herencia multipe es que una clase puede implementar múltiples interfaces (o una Interfaz puede extender múltiples Interfaces)

 3
Author: AlexWien,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-23 15:49:17

Una clase Java solo puede extender una clase padre. No se permite la herencia múltiple. Las interfaces no son clases, sin embargo, y una interfaz puede extender más de una interfaz padre.

Por ejemplo, echa un vistazo aquí: http://www.tutorialspoint.com/java/java_interfaces.htm

 2
Author: Hoang Ong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-23 15:50:37

Creo que su confusión radica en la herencia múltiple, en la que es una mala práctica hacerlo y en Java esto tampoco es posible. Sin embargo, la implementación de múltiples interfaces está permitida en Java y también es segura.

 1
Author: Cem Sultan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-23 15:50:36