Diferencia clave: herencia frente a interfaz en Java
Java es un lenguaje de programación desarrollado por Sun Microsystems. Java se puede utilizar para desarrollar diversas aplicaciones. Es un lenguaje multiparadigma que admite programación orientada a objetos, estructurada, etc. La principal ventaja de Java es que admite la programación orientada a objetos (POO). El programador puede crear clases y objetos. Hay cuatro pilares en OOP. Son herencia, polimorfismo, abstracción y encapsulación. La herencia y las interfaces están relacionadas con OOP. La diferencia clave entre la herencia y la interfaz es que la herencia es derivar nuevas clases de las clases existentes y una interfaz es implementar clases abstractas y herencia múltiple.
¿Qué es la herencia en Java?
La herencia puede lograr la reutilización del código. La herencia ayuda a reutilizar los atributos y métodos de una clase existente. El mecanismo de derivar una nueva clase usando una clase anterior se llama herencia. La clase antigua se conoce como clase padre o superclase. La clase derivada se denomina clase secundaria o subclase.
La sintaxis de la herencia Java es la siguiente.
class nombre_subclase extiende nombre_superclase {
declaración de variable;
declaración de método;
}
El concepto de herencia se puede explicar con el siguiente ejemplo. Suponga que hay una clase llamada A de la siguiente manera.
clase pública A{
suma de vacío público(){
Sistema.fuera.println(“Suma”);
}
}
Si queremos agregar un nuevo método sin cambiar la clase existente, podemos hacerlo de la siguiente manera.
clase pública B{
public void sub(){
Sistema.fuera.println(“Sub”);
}
}
El programador puede usar la herencia para usar la clase A sum().
la clase pública B extiende la clase A{
public void sub(){
Sistema.fuera.println(“Sub”);
}
}
En la función principal, es posible crear un objeto de B y llamar a sub(), que pertenece a la clase B y sum(), que pertenece a la clase A usando herencia.
public static void main(String argumentos){
B obj=nuevo B();
obj.sub();
obj.suma();
}
Hay diferentes tipos de herencia. Son herencia simple, herencia múltiple, herencia multinivel y herencia jerárquica. En herencia simple, hay una clase base y una clase derivada. En la herencia multinivel, hay tres clases, a saber, clase base, clase intermedia y clase derivada. La clase intermedia hereda de la clase base y la clase derivada hereda de la clase intermedia. En la herencia jerárquica, hay una clase base y muchas clases derivadas. Hay un tipo especial conocido como herencia híbrida. Es una combinación de dos o más tipos de herencia.
Figura 01: Herencia
En herencia múltiple hay muchas clases base y una clase derivada. Suponga que las clases A y B son las clases base. La clase C es la clase derivada. Si las clases A y B tienen el mismo método y el programador llama a ese método desde la clase derivada, se producirá un problema de ambigüedad. Heredar dos clases puede causar un error en tiempo de compilación. Por lo tanto, la herencia múltiple no se admite en Java. Se puede usar una interfaz para superar ese problema.
¿Qué es la interfaz en Java?
La abstracción es un proceso de ocultar los detalles de implementación y mostrar solo las funcionalidades al usuario. La abstracción se puede lograr utilizando clases abstractas o interfaces. Un método abstracto es un método sin implementación. Una clase con al menos un método abstracto es una clase abstracta. El ejemplo de una clase abstracta es el siguiente.
clase abstracta A{
suma vacía abstracta();
}
Suponga que hay dos clases abstractas como A y B. Para implementar métodos abstractos de A y B, se crea una nueva clase C. Luego, la clase C debe extender tanto A como B. Pero la herencia múltiple no es compatible con Java. Por lo tanto, debe utilizar interfaces. Las interfaces se pueden usar para declarar métodos, pero no es posible definir métodos. No es posible crear un objeto usando interfaces. La clase C debe implementar todos los métodos en la interfaz A y B.
interfaz A{
suma nula();
}
interfaz B{
vacío sub();
}
clase C implementa A, B{
suma de vacío público(){
Sistema.fuera.println(“Suma”);
}
public void sub(){
Sistema.fuera.println(“Resta”);
}
}
Ahora, en el programa principal es posible crear un objeto de C y llamar a ambos métodos.
public static void principal (String argumentos) {
C obj=nuevo C();
obj.suma();
obj.sub();
}
Entonces, las interfaces pueden usarse para implementar la herencia múltiple.
Otro uso de las interfaces es que proporciona seguridad. Consulte el siguiente código.
interfaz A {
suma nula ();
}
clase B implementa A {
suma de vacío público () {
Sistema.fuera.println(“Suma”);
}
multiplicar vacío público () {
Sistema.fuera.println(“Multiplicación”);
}
}
Al crear un objeto de B, es posible llamar a ambos métodos suma () y multiplicación (). Si el programador quiere restringir el uso de la función multiplicar (), es posible de la siguiente manera.
public static void main(String argumentos){
A obj=nueva B();
obj.suma();
}
A obj=nueva B(); creará un objeto. Es de tipo A y la memoria se asigna como B. Es posible llamar a sum() pero no puede ejecutar multiplicar(). Esta restricción se realiza mediante interfaces.
¿Cuáles son las similitudes entre la herencia y la interfaz en Java?
- Ambos conceptos están relacionados con la Programación Orientada a Objetos
- Ambos representan la relación ES-UN.
¿Cuál es la diferencia entre herencia e interfaz en Java?
Herencia frente a interfaz en Java |
|
La herencia es un concepto de programación orientada a objetos para derivar nuevas clases de las clases existentes. | La interfaz es un mecanismo en programación orientada a objetos para implementar la abstracción y la herencia múltiple. |
Uso | |
La herencia permite la reutilización del código. | Las interfaces proporcionan abstracción y herencia múltiple. |
Resumen: herencia frente a interfaz en Java
Java es un lenguaje de programación multiparadigma que admite la programación orientada a objetos. La herencia y las interfaces están relacionadas con la programación orientada a objetos. La diferencia entre herencia e interfaz es que la herencia consiste en derivar nuevas clases a partir de clases existentes y las interfaces consisten en implementar clases abstractas y herencia múltiple.
Descargue la versión en PDF de Herencia frente a interfaz en Java
Puede descargar la versión en PDF de este artículo y utilizarlo sin conexión según la nota de la cita. Descargue la versión en PDF aquí Diferencia entre herencia e interfaz en Java