The composition is a design technique in which your class can have an instance of another class as a field of your class. Inheritance is a mechanism under which one object can acquire the properties and behavior of the parent object by extending a class.
Composition and Inheritance both provide code reusability by relating class. We can also get the functionality of inheritance when you use composition. Below are the differences.
Sr. No. | Key | Inheritance | Composition |
---|---|---|---|
1 | Basic | Inheritance is an "is-a" relationship | Composition is a "has-a". Relationship |
2 | Code Reuse | In Inheritance, a class lass can extend only one interface, therefore, you can reuse your code only in one class only | We can reuse code in multiple class |
3 | Scope | Inheritance provides its features at compile time | Composition is easily achieved at runtime |
4 | Final | We can’t reuse code from the final class | It allows code reuse even from final classes |
5 | Methods | It exposes both public and protected method of the parent class | It doesn’t expose. They interact using public interface. |
Example of Inheritance
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); } }
Example of Composition
public class Student { } public class College { private Student student; public College() { this.student = new Student(); } }