English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Diferencia entre herencia y composición en Java

La composición es una técnica de diseño, en la que su clase puede tener como campo una instancia de otra clase. La herencia es un mecanismo en el que un objeto puede obtener las propiedades y comportamientos del objeto padre al extender la clase.

La composición y la herencia proporcionan reutilización de código a través de clases relacionadas. Cuando se utiliza la composición, también podemos obtener las funciones de la herencia. A continuación se muestra la diferencia. 

NúmeroClaveHerenciaComposición
1
Básico 
La herencia es una relación "es".
La composición es una relación "es". 
2
Reutilización de código 
En la herencia, una clase puede extender solo una interfaz, por lo que solo se puede reutilizar código en una clase 
Podemos reutilizar código en múltiples clases 
3
Alcance 
 La herencia proporciona sus funciones en tiempo de compilación
Implementación sencilla en tiempo de ejecución 
4
Finalmente 
 No podemos reutilizar el código de la última clase 
Incluso permite reutilizar código de clases finales
5
Métodos 
Publica métodos públicos y protegidos de la clase padre 
No lo expone. Ellos interactúan mediante la interfaz pública.

Ejemplo de herencia

class Animal{
   String name = "Orio";
}
class Dog extends Animal{
   String type = "Dog";
   public static void main(String args[]){
      Dog p = new Dog();
      System.out.println("Name:",+p.name);
      System.out.println("Type:",+p.type);
   }
}

Ejemplo de composición

public class Student {
}
public class College {
   private Student student;
   public College() {
      this.student = new Student();
   }
}