¿Qué es una interfaz en Java? Guía para principiantes de la interfaz de Java. ¿Cómo usarlo? Ejemplo adjunto.
Publicado: 2020-10-31
¿Por qué y cuándo usar una interfaz?
- Una interfaz es un tipo de referencia en Java.
- Es similar a la clase.
- Es una colección de métodos abstractos.
- Se utiliza para lograr la abstracción total.
Creo que esta es la primera pregunta que puede esperar en Java Interview. Preguntas muy básicas pero muy utilizadas en entrevista
No hay una respuesta perfecta para esto y hay varias formas de responder a esta pregunta. ¿Podría ser su entrevistador buscando un enfoque práctico de estas preguntas? Posible.
Entonces comencemos con la definición básica de una interfaz Java
Repasaremos lo mismo con múltiples ejemplos.
- ¿Qué es una interfaz en Java?
- ¿Qué es una interfaz en Java con un ejemplo en tiempo real?
- ¿Por qué usar una interfaz en Java?
- Diseño de interfaz Java
- Preguntas de entrevista más comunes en Interface
Fundamentos de la interfaz:

- Una
interface
es solo un contrato, una descripción del comportamiento que tendrá una clase de implementación. La clase de implementación asegura que tendrá estos métodos que se pueden usar en ella. Básicamente es un contrato o una promesa que la clase tiene que hacer. - ¿Qué pasa si en sus proyectos todas las diversas implementaciones comparten las mismas firmas de método? La interfaz funciona mejor en ese caso.
- En la etapa posterior después de la implementación del proyecto principal, veamos si ha implementado definiciones de interfaz en ~ 50 lugares, ¿qué sucede si cambia la interfaz? Tienes que hacer modificaciones a los 50 lugares en tus proyectos.
- Es aconsejable dedicar más tiempo a definir la interfaz durante la fase de diseño en lugar de cambiarla en una etapa posterior.
- Una interfaz consta de variables
singleton
(public static final
) y métodospublic abstract
. Normalmente preferimos la interfaz en tiempo real cuando sabemos qué hacer pero no sabemos cómo hacerlo. Una interfaz no puede contener campos de instancia. - Las clases que implementan la interfaz deben proporcionar la definición de método para todos los métodos presentes.
- Una clase puede implementar varias interfaces.
- Se puede agregar una implementación de interfaz a cualquier clase de terceros existente.
- Una interfaz puede contener cualquier número de métodos.
- En Java no puede instanciar una interfaz.
- Una interfaz no contiene ningún constructor.
- Una interfaz no es extendida por una clase; es implementado por una clase.
- Una interfaz puede extender múltiples interfaces.
Ejemplos de interfaz:
Consejo 1.
Crear interfaz CrunchifyDatabaseInterface.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package crunchify . com . java . tutorials ; import java . util . Map ; import java . util . UUID ; /** * @author Crunchify.com * What Is an Interface in Java? Beginners Guide to Java Interface. */ public interface CrunchifyDatabaseInterface { // Basic Database CRUD Operations // Insert boolean insertCrunchifyRecord ( UUID id , String name , String address , String phone , String zip , String comments ) ; // Delete public boolean deleteCrunchifyRecord ( UUID id ) ; // Get public Map < String , String > getListOfAllCrunchifyRecords ( ) ; // Update boolean updateCrunchifyRecord ( UUID id , Map < String , String > records ) ; } |
Consejo 2.
Implementar interfaz CrunchifyDatabaseOracleImpl.java
Cuando implemente una interfaz por primera vez, Eclipse le mostrará cómo agregar métodos no implementados.

Simplemente haga clic en " Add unimplemented methods
" y su clase IMPL debería estar lista con Auto-generated method stub
.
Consejo 3. Método de implementación real.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
package crunchify . com . java . tutorials ; import java . util . Map ; import java . util . UUID ; /** * @author Crunchify.com * What Is an Interface in Java? Beginners Guide to Java Interface. */ public class CrunchifyDatabaseOracleImpl implements CrunchifyDatabaseInterface { // Override: Indicates that a method declaration is intended to override a method declaration in a supertype. // If a method is annotated with this annotation type compilers are required to generate an error message unless at least one of the following conditions hold: // The method does override or implement a method declared in a supertype. // The method has a signature that is override-equivalent to that of any public method declared in Object. @Override public boolean insertCrunchifyRecord ( UUID id , String name , String address , String phone , String zip , String comments ) { // TODO Provide your actual implementation here based on your need specific to Oracle return false ; } // UUID(): A class that represents an immutable universally unique identifier (UUID). // A UUID represents a 128-bit value. // There exist different variants of these global identifiers. // The methods of this class are for manipulating the Leach-Salz variant, although the constructors allow the creation of any variant of UUID @Override public boolean deleteCrunchifyRecord ( UUID id ) { // TODO Provide your actual implementation here based on your need specific to Oracle return false ; } // Map(): An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value. // This interface takes the place of the Dictionary class, which was a totally abstract class rather than an interface. @Override public Map < String , String > getListOfAllCrunchifyRecords ( ) { // TODO Provide your actual implementation here based on your need specific to Oracle return null ; } @Override public boolean updateCrunchifyRecord ( UUID id , Map < String , String > records ) { // TODO Provide your actual implementation here based on your need specific to Oracle return false ; } } |
Consejo 4.
De manera similar, podría usar la misma interfaz para implementar diferentes operaciones específicas de la base de datos. Como, para DB2, MySQL, MongoDB, Cassandra DB, etc.

¿Que sigue?
En proceso de escribir Tutorial sobre clase abstracta y luego otro tutorial que muestra claramente la diferencia entre la clase abstracta y la interfaz.