Java es uno de los lenguajes de programación más populares y ampliamente utilizados. Java ha sido uno de los lenguajes de programación más populares durante muchos años. Java está orientado a objetos . Sin embargo, no se considera puramente orientado a objetos, ya que brinda soporte para tipos de datos primitivos (como int, char, etc.). En este artículo, entenderemos la diferencia entre los dos conceptos más importantes en Java, herencia e interfaz.
Interfaz: Las interfaces son los planos de las clases. Especifican qué debe hacer una clase y no cómo. Al igual que una clase, una interfaz puede tener métodos y variables, pero los métodos declarados en una interfaz son abstractos por defecto (es decir, solo contienen la firma del método y no el cuerpo del método). Las interfaces se utilizan para implementar una abstracción completa .
Herencia: Es un mecanismo en Java por el cual una clase puede heredar las características de otra clase. Hay múltiples herencias posibles en java. Están:
- Herencia única: en la herencia única, las subclases heredan las características de una superclase. En la imagen a continuación, la clase A sirve como clase base para la clase B derivada.
- Herencia multinivel: en la herencia multinivel, una clase derivada heredará una clase base y, además, la clase derivada también actuará como la clase base para otra clase. En la siguiente imagen, la clase A sirve como clase base para la clase B derivada, que a su vez sirve como clase base para la clase C derivada. En Java, una clase no puede acceder directamente a los miembros de los abuelos.
- Herencia jerárquica: en la herencia jerárquica, una clase sirve como superclase (clase base) para más de una subclase. En la siguiente imagen, la clase A sirve como clase base para las clases derivadas B, C y D.
La siguiente tabla describe la diferencia entre la herencia y la interfaz:
Categoría | Herencia | Interfaz |
---|---|---|
Descripción | La herencia es el mecanismo en java por el cual una clase puede heredar las características de otra clase. | La interfaz es el modelo de la clase. Especifica qué debe hacer una clase y no cómo. Al igual que una clase, una interfaz puede tener métodos y variables, pero los métodos declarados en una interfaz son abstractos por defecto (solo firma de método, sin cuerpo). |
Usar | Se utiliza para obtener las características de otra clase. | Se utiliza para proporcionar abstracción total. |
Sintaxis | clase nombre_subclase extiende nombre_superclase { } |
interfaz <nombre_interfaz>{ } |
Número de herencia | Se utiliza para proporcionar 4 tipos de herencia. (herencia multinivel, simple, híbrida y jerárquica) | Se utiliza para proporcionar 1 tipo de herencia (múltiple). |
Palabras clave | Utiliza la palabra clave extends. | Utiliza la palabra clave implementa. |
Herencia | Podemos heredar clases menores que Interface si usamos Herencia. | Podemos heredar muchísimas más clases que Herencia, si usamos Interfaz. |
Definición del método | Los métodos se pueden definir dentro de la clase en caso de herencia. | Los métodos no se pueden definir dentro de la clase en el caso de la interfaz (excepto mediante el uso de palabras clave estáticas y predeterminadas). |
Sobrecarga | Sobrecarga el sistema si intentamos extender muchas clases. | El sistema no está sobrecargado, no importa cuántas clases implementemos. |
Funcionalidad proporcionada | No proporciona la funcionalidad de acoplamiento flojo | Proporciona la funcionalidad de acoplamiento flojo. |
Herencia múltiple | No podemos hacer herencia múltiple (causa un error de tiempo de compilación). | Podemos hacer herencia múltiple usando interfaces. |
Publicación traducida automáticamente
Artículo escrito por supriya_saxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA