La Clase y la Interfaz se utilizan para crear nuevos tipos de referencia. Una clase es una colección de campos y métodos que operan sobre los campos. Una interfaz tiene métodos totalmente abstractos, es decir, métodos sin nadie. Una interfaz es sintácticamente similar a la clase, pero hay una diferencia importante entre la clase y la interfaz que es una clase puede ser instanciada, pero una interfaz nunca puede ser instanciada.
Así que vamos a aprender un poco más la diferencia entre una clase y la interfaz con la ayuda de una tabla de comparación se muestra a continuación.
Contenido: Clase Vs Interfaz
- Tabla comparativa
- Definición
- Diferencias principales
- Conclusión
Tabla comparativa
Base de comparación | Clase | Interfaz |
---|---|---|
Básica | Una clase es instanciada para crear objetos. | Una interfaz nunca puede ser instanciada ya que los métodos no pueden realizar ninguna acción al ser invocados. |
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 de una interfaz son puramente abstractos. |
Implementar/Extender | Una clase puede implementar cualquier número de interfaz y puede extender sólo una clase. | Una interfaz puede extender múltiples 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 un aspecto muy importante de la programación Java sin clases no se 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 sobre esos campos. Una clase se crea usando la palabra clave class. Veamos como declarar una clase.
class class_name{/*fields...methods*/}
Cuando una clase es instanciada cada objeto creado contiene una copia de 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 forma diferente según su requerimiento.
Los miembros de una clase tienen especificadores de acceso que deciden la visibilidad y accesibilidad de los miembros para el usuario o para las subclases. Los especificadores de acceso son public, private y protected. 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 heredante). Así, la clase cumple con el concepto de ocultación de datos y encapsulación 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 sólo puede heredar una única clase. Para evitar esta restricción, los diseñadores de Java introdujeron el concepto de interfaz. Una interfaz es sintácticamente similar a una clase, pero carece de declaración de campos y los métodos dentro de una interfaz no tienen ninguna implementación. Una interfaz se declara utilizando la palabra clave interfaz. Veamos la declaración de una interfaz.
interface interface_name {type var_name= value;type method1(parameter-list);type method2(parameter-list);..}
Una interfaz no define ningún método declarado dentro de ella porque carece de campos sobre los que operar. Sólo 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 campo miembro, debe ser inicializado en el momento de su declaración. Una interfaz nunca contiene ningún constructor ya que carece de miembros de campo para ser inicializados. Por lo tanto, una interfaz sólo define lo que una clase debe hacer en lugar de cómo debe hacerlo.
Una interfaz una vez creada puede ser implementada por cualquier número de clases utilizando una palabra clave implements. 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 extiende otra interfaz. Entonces una clase debe definir los métodos de ambas interfaces que aparecen en una cadena. Los métodos dentro de una interfaz deben ser siempre públicos ya que tienen que ser accedidos por las clases que los implementan.
Diferencias clave entre clase e interfaz en Java
- Una clase puede ser instanciada creando sus objetos. Una interfaz nunca es instanciada ya que los métodos declarados dentro de una interfaz son abstractos y no realizan ninguna acción, por lo que no sirve de nada instanciar ninguna interfaz.
- Una clase se declara utilizando la palabra clave class. Del mismo modo, una interfaz se crea utilizando una palabra clave interfaz.
- Los miembros de una clase pueden tener el especificador de acceso como public, private, protected. Pero los miembros de una interfaz son siempre públicos ya que deben ser accedidos por las clases que los implementan.
- Los métodos dentro de una clase se definen para realizar una acción sobre los campos declarados en la clase. Como la interfaz carece de declaración de campos, los métodos dentro de una interfaz son puramente abstractos.
- Una clase puede implementar cualquier número de interfaces pero sólo puede extender una superclase. 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 constructores ya que no hay campos que inicializar. Los campos de una interfaz se inicializan sólo en el momento de su declaración.
Conclusión
Tanto las clases como las interfaces tienen su propia importancia. Una clase se utiliza cuando necesitamos definir cómo se haría la tarea. Una interfaz se utiliza cuando necesitamos saber qué tarea hay que hacer.