Lo que quiero decir es:
interface B {...}
interface A extends B {...} // allowed
interface A implements B {...} // not allowed
Lo busqué en Google y encontré esto :
implements
denota definir una implementación para los métodos de una interfaz. Sin embargo, las interfaces no tienen implementación, por lo que eso no es posible.
Sin embargo, la interfaz es una clase 100% abstracta y una clase abstracta puede implementar interfaces (clase 100% abstracta) sin implementar sus métodos. ¿Cuál es el problema cuando se define como "interfaz"?
En detalles,
interface A {
void methodA();
}
abstract class B implements A {} // we may not implement methodA() but allowed
class C extends B {
void methodA(){}
}
interface B implements A {} // not allowed.
//however, interface B = %100 abstract class B
fuente
implements
significa que se definirá un comportamiento para losabstract
métodos (excepto para las clases abstractas, obviamente), usted define la implementación.extends
significa que un comportamiento se hereda.Con las interfaces es posible decir que una interfaz debería tener el mismo comportamiento que otra, ni siquiera hay una implementación real. Es por eso que tiene más sentido para una interfaz a
extends
otra interfaz en lugar de implementarla.En una nota al margen, recuerde que incluso si una
abstract
clase puede definirabstract
métodos (de la misma manera que lo hace una interfaz), sigue siendo una clase y aún debe heredarse (extenderse) y no implementarse.fuente
Conceptualmente, existen dos clases e interfaces de "dominios". Dentro de estos dominios siempre se está extendiendo, solo una clase implementa una interfaz, que es como "cruzar la frontera". Así que básicamente "extiende" para interfaces refleja el comportamiento de las clases. Al menos creo que esta es la lógica detrás. Parece que no todo el mundo está de acuerdo con este tipo de lógica (yo mismo lo encuentro un poco artificial) y, de hecho, no hay ninguna razón técnica para tener dos palabras clave diferentes.
fuente
Esto es simplemente una cuestión de convención. Los escritores del lenguaje Java decidieron que "extender" es la mejor manera de describir esta relación, así que eso es lo que todos usamos.
En general, aunque una interfaz es "una clase 100% abstracta", no pensamos en ellos de esa manera. Por lo general, pensamos en las interfaces como una promesa para implementar ciertos métodos clave en lugar de una clase de la que derivar. Por eso, tendemos a utilizar un lenguaje diferente para las interfaces que para las clases.
Como afirman otros, hay buenas razones para elegir "se extiende" en lugar de "implementos".
fuente
Espero que esto te ayude un poco a lo que he aprendido en oops (core java) durante mi universidad.
Implementos denota definir una implementación para los métodos de una interfaz. Sin embargo, las interfaces no tienen implementación, por lo que eso no es posible. Sin embargo, una interfaz puede extender otra interfaz, lo que significa que puede agregar más métodos y heredar su tipo.
Aquí hay un ejemplo a continuación, este es mi entendimiento y lo que he aprendido en ¡Ups!
y tenga en cuenta una cosa: una interfaz solo puede extender otra interfaz y si desea definir su función en alguna clase, solo se implementa una interfaz, por ejemplo, a continuación
Ahora, si una clase implementara esta interfaz, se vería así:
y si una clase abstracta tiene alguna función abstracta define y declara y quieres definir esas funciones o puedes decir implementar esas funciones, entonces supones extender esa clase porque la clase abstracta solo se puede extender. aquí hay un ejemplo a continuación.
Aquí hay una subclase de ejemplo de MyAbstractClass:
fuente
La interfaz es como una abstracción que no proporciona ninguna funcionalidad. Por lo tanto, no 'implementa' sino que extiende las otras abstracciones o interfaces.
fuente
Interface es la clase que contiene un método abstracto que no puede crear ningún objeto. Dado que Interface no puede crear el objeto y no es una clase pura, no vale la pena implementarlo.
fuente