una qué interfaz interfaces instanciar figura ejemplos diferencia código clases clase asociarías abstractos abstractas abstracta abstraccion java interface

qué - public interface java



¿Por qué necesitamos interfaces en Java? (5)

Los necesita para que pueda escribir sus objetos fuera de la jerarquía.

Por ejemplo, los objetos que se pueden comparar pueden estar prácticamente en cualquier parte de la jerarquía de objetos; no es necesario que tengan un ancestro común que pueda compararse. String se pueden comparar, se pueden comparar Integer , incluso se pueden hacer sus propios Frame que se podrían comparar (por ejemplo, un fotograma es "menor" que otro fotograma si está más en primer plano, es decir, si se superpone al otro marco). Por lo tanto, si desea hacer referencia a algo que se pueda comparar, se lo forzaría a declarar una variable con el antecesor más general, en este caso, Object . Esto es demasiado general, porque entonces también puede recibir valores que no son comparables (y lanzaría errores cuando intente compararlos).

Por lo tanto, la interfaz Comparable : selecciona todas las clases que implementan la funcionalidad de comparación en la jerarquía de subclase-superclase.

En Java para implementar herencia múltiple usamos interfaces. ¿Es el único uso de interfaces? En caso afirmativo, ¿cuál es el uso principal de la interfaz en Java? ¿Por qué necesitamos interfaces en Java?


Yo diría que el uso principal es el polimorfismo, o la capacidad de realizar la misma operación en varios objetos diferentes. Si todos los objetos implementan la misma interfaz y tienen el mismo método, puede almacenar todos esos objetos en un Vector, por ejemplo, e iterar a través del Vector llamando a ese método en cada uno.


Cierto código no se compilará sin él.

Por ejemplo, en:

for (String name : list) { System.out.print("/nIn foreach loop: name: " + name); }

list debe implementar la java.lang.Iterable interface .


También encuentro sobre el uso real de la interfaz. Entonces encontré esta explicación útil. Espero que esto ayude a un mayor espectador.

Una interfaz es un contrato (o un protocolo, o un entendimiento común) de lo que las clases pueden hacer. Cuando una clase implementa una determinada interfaz, promete proporcionar implementación a todos los métodos abstractos declarados en la interfaz. La interfaz define un conjunto de comportamientos comunes. Las clases implementan la interfaz de acuerdo con estos comportamientos y proporcionan su propia implementación a los comportamientos. Esto le permite programar en la interfaz, en lugar de la implementación real. Uno de los principales usos de la interfaz es proporcionar un contrato de comunicación entre dos objetos. Si sabe que una clase implementa una interfaz, entonces sabe que esa clase contiene implementaciones concretas de los métodos declarados en esa interfaz, y se le garantiza que podrá invocar estos métodos de forma segura. En otras palabras, dos objetos pueden comunicarse en función del contrato definido en la interfaz, en lugar de su implementación específica.

En segundo lugar, Java no es compatible con herencia múltiple (mientras que C ++ sí lo hace). La herencia múltiple le permite derivar una subclase de más de una superclase directa. Esto plantea un problema si dos superclases directas tienen implementaciones conflictivas. (¿Cuál seguir en la subclase?). Sin embargo, la herencia múltiple tiene su lugar. Java hace esto permitiéndole "implementar" más de una interfaz (pero solo puede "extender" desde una sola superclase). Como las interfaces contienen solo métodos abstractos sin implementación real, no pueden surgir conflictos entre las múltiples interfaces. (La interfaz puede contener constantes pero no se recomienda. Si una subclase implementa dos interfaces con constantes en conflicto, el compilador marcará un error de compilación).

desde: http://www.ntu.edu.sg/home/ehchua/programming/java/J3b_OOPInheritancePolymorphism.html#zz-6.6


Además de estas respuestas, diría que el uso más importante para las interfaces es reducir el acoplamiento entre componentes en su software.

Una interfaz permite representar un acuerdo entre clases sobre cómo se hablarán entre sí sin estar atados a las implementaciones reales.

Esto nos permite reemplazar implementaciones por otros (muy útil para probar o cambiar casos de uso) sin cambiar el código compilado.