Gráfica comparativa
Bases para la comparación | Clase | Interfaz |
---|---|---|
BASIC | Se crea una instancia de una clase para crear objetos. | Nunca se puede crear una instancia de una interfaz, ya que los métodos no pueden realizar ninguna acción al invocar. |
Palabra clave | clase | interfaz |
Especificador de acceso | Los miembros de una clase pueden ser privados, públicos o protegidos. | Los miembros de una interfaz son siempre públicos. |
Métodos | Los métodos de una clase se definen para realizar una acción específica. | Los métodos en una interfaz son puramente abstractos. |
Implementar / Extender | Una clase puede implementar cualquier número de interfaz y puede extender solo una clase. | Una interfaz puede extender varias interfaces pero no puede implementar ninguna interfaz. |
Constructor | Una clase puede tener constructores para inicializar las variables. | Una interfaz nunca puede tener un constructor, ya que casi no hay ninguna variable para inicializar. |
Definición de clase
Una clase es el aspecto más importante de la programación Java sin clases que no puede implementar un programa Java. Una clase crea tipos de referencia y estos tipos de referencia se utilizan para crear objetos. Una clase tiene una firma y un cuerpo. La firma de una clase tiene el nombre de la clase y la información que indica si la clase ha heredado otra clase. El cuerpo de una clase tiene campos y métodos que operan en esos campos. Una clase se crea utilizando una clase de palabra clave. Veamos cómo declarar una clase.
clase nombre_clase {/ * campos ... métodos * /}
Cuando se crea una instancia de una clase, cada objeto creado contiene una copia de los campos y métodos con ellos. Los campos y miembros declarados dentro de una clase pueden ser estáticos o no estáticos. El valor de los miembros estáticos es constante para cada objeto, mientras que los miembros no estáticos son inicializados por cada objeto de manera diferente según su requisito.
Los miembros de una clase tienen especificadores de acceso que deciden la visibilidad y accesibilidad de los miembros para el usuario o las subclases. Los especificadores de acceso son públicos, privados y protegidos. Una clase puede ser heredada por otra clase utilizando el especificador de acceso que decidirá la visibilidad de los miembros de una superclase (clase heredada) en una subclase (clase hereditaria). De este modo, la clase cumple con el concepto de ocultación y encapsulación de datos en la programación orientada a objetos.
Definición de interfaz
Una interfaz también se encuentra entre los tipos de referencia definidos en Java. La importancia de una interfaz es que en Java, una clase solo puede heredar una sola clase. Para evitar esta restricción, los diseñadores de Java introdujeron un concepto de interfaz. Una interfaz es sintácticamente similar a una clase, pero carece de declaración de campo y los métodos dentro de una interfaz no tienen ninguna implementación. Una interfaz se declara utilizando una interfaz de palabra clave. Veamos la declaración de una interfaz.
interfaz nombre_interfaz {tipo var_name = valor; tipo method1 (lista de parámetros); tipo method2 (lista de parámetros); . . }
Una interfaz no define ningún método declarado dentro de ella porque carece de campos para operar. Solo porque cualquier método dentro de una interfaz no realiza ninguna acción, una interfaz nunca puede ser instanciada. Si una interfaz tiene algún miembro de campo, debe inicializarse en el momento de su declaración. Una interfaz nunca contiene ningún constructor, ya que carece de miembros de campo para iniciarse. Por lo tanto, una interfaz solo define lo que debe hacer una clase en lugar de cómo debe hacerlo.
Una interfaz creada una vez creada puede implementarse por cualquier número de clases usando implementos de palabras clave. Pero las clases que implementan una interfaz deben definir todos los métodos dentro de una interfaz. Una interfaz también puede heredar otra interfaz utilizando la palabra clave extend . Si una clase implementa una interfaz que se extiende a otra interfaz. Luego, una clase debe definir los métodos de ambas interfaces que aparecen en una cadena. Los métodos dentro de una interfaz siempre deben ser públicos, ya que las clases que los implementan deben acceder a ellos.
Diferencias clave entre clase e interfaz en Java
- Una clase puede ser instanciada creando sus objetos. Una interfaz nunca se crea una instancia, ya que los métodos declarados dentro de una interfaz son abstractos y no realizan ninguna acción, por lo que no se utiliza la creación de instancias de una interfaz.
- Una clase se declara usando una clase de palabra clave. De la misma manera, una interfaz se crea utilizando una interfaz de palabra clave.
- Los miembros de una clase pueden tener el especificador de acceso como público, privado, protegido. Pero los miembros de una interfaz siempre son públicos, ya que las clases que los implementan deben acceder a ellos.
- Los métodos dentro de una clase se definen para realizar una acción en los campos declarados en la clase. Como la interfaz carece de la declaración de campos, los métodos dentro de una interfaz son puramente abstractos.
- Una clase puede implementar cualquier número de interfaces pero puede extender solo una súper clase. Una interfaz puede extender cualquier número de interfaces pero no puede implementar ninguna interfaz.
- Una clase tiene constructores definidos dentro de ella para obtener la variable inicializada. Pero, una interfaz no tiene ningún constructor ya que no hay campos para inicializar. Los campos de una interfaz se inicializan solo en el momento de su declaración.
Conclusión:
Ambas clases e interfaces tienen su propia importancia. Se usa una clase cuando necesitamos definir cómo se realizará la tarea. Se utiliza una interfaz cuando necesitamos saber qué tarea hay que hacer.