¿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?
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
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
.
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.
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)
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
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.
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